Exemplo n.º 1
0
<?php

require_once "closures.php";
$logger = create_function('$product', 'print "    logging ({$product->name})\\n";');
$processor = new ProcessSale();
$processor->registerCallback($logger);
$processor->sale(new Product("shoes", 6));
print "\n";
$processor->sale(new Product("coffee", 6));
Exemplo n.º 2
0
            $count += $product->price;
            // добавляет к счетчику суммы товаров, цену товара
            print "сумма {$count} <br>";
            // выводит сумму товара
            if ($count > $amt) {
                // если сумма товара выше заданной суммы, то выводим сообщение
                print "продано товаров на сумму {$count} <br>";
            }
        };
    }
}
$logger = create_function('$product', 'print "Записываем {$product->name} <br>";');
// создаём новую анонимную функцию
$logger2 = function ($product) {
    print "Записываем {$product->name} <br>";
};
// болие удобный способ создание анонимной функции
$processor = new ProcessSale();
// создаём новый объект класса ProcessSale
$processor->registerCallback($logger);
// записываем в массив нашу новую анонимную функцию $logger
$processor->registerCallback($logger2);
// записываем в массив нашу новую анонимную функцию $logger2
$processor->registerCallback([new Mailer(), "doMail"]);
// записываем в массив новый метод из класс Mailer
$processor->registerCallback(Totalizer::warnAmount(8));
// записываем в массив новый статичный метод класса Totalizer, который принимает сумму после которой начинает выводить определённое сообщение
$processor->sale(new Product("Туфли", 6));
// передаём новый объект класса Product, в метод который который передаёт его всем записанным в массив новым функциям
echo "<br>";
$processor->sale(new Product("Кофе", 6));
Exemplo n.º 3
0
<?php

require_once "closures.php";
class Mailer
{
    function doMail($product)
    {
        print "    mailing ({$product->name})\n";
    }
}
$processor = new ProcessSale();
$processor->registerCallback(array(new Mailer(), "doMail"));
$processor->sale(new Product("shoes", 6));
print "\n";
$processor->sale(new Product("coffee", 6));
Exemplo n.º 4
0
<?php

require_once "closures.php";
class Totalizer
{
    static function warnAmount()
    {
        return function ($product) {
            if ($product->price > 5) {
                print "    reached high price: {$product->price}\n";
            }
        };
    }
}
$processor = new ProcessSale();
$processor->registerCallback(Totalizer::warnAmount());
$processor->sale(new Product("shoes", 6));
print "\n";
$processor->sale(new Product("coffee", 6));