Анонимные функции в PHP 5.3

В PHP 5.3 появилась поддержка так называемых анонимных функций или, говоря другими словами, возможности создавать функции без имени.
Официальное руководство приводит такой пример:

$greet = function($name) {
    printf("Hello %srn", $name);
};
$greet('World');
$greet('PHP');

Анонимные функции (или «Лямбда» см. Лямбда-исчисление) реализуют концепцию функций, являющихся значением (в примере выше, анонимная функция является значением $greet).
В англоязычной статье Функционал PHP 5.3 — что такое анонимные функции и замыкания? также приводится пример связанных с анонимными функциями замыканий — функций, определённых внутри других функций и имеющих доступ к их локальным переменным (см. Замыкания).

Это очень напоминает Javascript, где анонимные функции занимают не последнее место. Сравните:

ActiveRecordConfig::initialize(function($cfg)
{
    $cfg->set_model_directory('models');
    $cfg->set_connections(array(
        'development' => 'mysql://root:password@localhost/database'));
});
$("div").addClass(function(index, currentClass) {
    var addedClass;
   
    if ( currentClass === "red" ) {
        addedClass = "green";
        $("p").text("There is one green div");
    }
   
    return addedClass;
});

В конце определения анонимной функции есть точка с запятой. Она необходима, так как такое определение функции это утверждение, а после определения утверждения всегда должна быть точка с запятой.

Также PHP позволяет вкладывать функции внутрь друг друга.

Официальная документация

Интересное

Project Glass — Очки будущего от Google
Компания Google представила суперсовременные «очки дополненной реальности» или Project Glass. Впрочем,...
Проверка сайта на вирусы
Если пользоваться привычной терминологией, то web вирусы не являются вирусами в традиционном...
Отзыв о FirstVDS
При покупке хостинга у FirstVDS мне предложили скидку за годный отзыв в блоге или на форуме....
Git и Bitbucket
Git – это распределенная система контроля версий. Пожалуй, на этом теория заканчивается, так как...

Комментарии

    Чтобы оставлять комментарии, авторизируйтесь

    Войти через OpenID

    рейтинг0+-
    Популярные
    Точки входа
    Наверх