PHP

Замыкания в 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);
Теги:
closure, замыкания
Похожие новости:
Добавлено: 22 Сентября 2013 11:49:09 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...