Замыкания в PHP
Я очень люблю JavaScript за то количество плюшек полезностей, которые у него есть. Одна из таких полезностей — это замыкания. И вот это прелесть появилась в PHP (начиная с версии PHP 5.3) .
Давайте рассмотрим, что же такое — замыкание в PHP.
$g = 'test';
$c = function($a, $b) use($g){
echo $a . $b . $g;
};
$g = 'test2';
var_dump($c);
/*
object(Closure)#1 (2)
{
["static"]=> array(1) { ["g"]=> string(4) "test" }
["parameter"]=> array(2) {
["$a"] => string(10) ""
["$b"]=> string(10) ""
}
}
*/
Очень удобно применять анонимные функции и для фильтрации:
$x = array_filter($data, function($v){ return $v > 0; });
//vs
$x = array();
foreach($data as $v)
{
if($v > 0){$x[] = $v}
}
Замыкания идеально подходят в качестве обработчиков событий. Например:
//где-то при конфигурации приложения.
$this->events->on(User::EVENT_REGISTER, function($user){
//обновить счетчик логинов для пользователя и т.д.
});
$this->events->on(User::EVENT_REGISTER’, function($user){
//выслать email для подтверждения.
});
//в обработчике формы регистрации
$this->events->trigger(User::EVENT_REGISTER, $user);
Комментарии:
Нету комментариев для вывода...