コード例 #1
0
ファイル: anonim.php プロジェクト: pers1307/levelUpPHP
    function sale($product)
    {
        echo $product->name . ': обрабатывается ...';
        foreach ($this->callbacks as $callback) {
            call_user_func($callback, $product);
        }
    }
}
$logger = create_function('$product', 'echo "Записываем " . $product->name;');
$logger2 = function ($product) {
    echo 'Отписываем ' . $product->name;
};
$processor = new ProcessSale();
$processor->registerCallback($logger);
$processor->registerCallback($logger2);
$processor->sale(new Product('Туфли', 6));
echo '<br />';
$processor->sale(new Product('Кофе', 6));
// Использование внешних переменных как контекст при выполнении анонимной функции
$amt = 7;
$count = 0;
$zamikanie = function ($product) use($amt, &$count) {
    $count += $product->price;
    echo 'Сумма ' . $count;
    if ($count > $amt) {
        echo $count;
    }
};
//echo get_class($processor); // возвращает тип класса
//print_r(get_declared_classes());
//print_r(get_class_methods('ProcessSale'));
コード例 #2
0
ファイル: listing04.14.php プロジェクト: jabouzi/projet
<?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));
コード例 #3
0
ファイル: index.php プロジェクト: Overfinch/oop
            $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));