Зачем хранить функцию как переменную в PHP

Я видел эту практику в php docs:

$foo = function() {
    echo 'foo';
}

$foo();

Зачем вам это делать, а не просто:

function foo()
{
    echo 'foo';
}

foo();

Ответ 1

Они полезны несколькими способами. Лично я использую их, потому что их легче контролировать, чем фактические функции.

Но также анонимные функции могут сделать это:

$someVar = "Hello, world!";
$show = function() use ($someVar) {
    echo $someVar;
}
$show();

Анонимные функции могут "импортировать" переменные из внешней области. Наилучшая часть состоит в том, что он безопасен для использования в циклах (в отличие от JavaScript), потому что он берет копию переменной, которая будет использоваться с этой функцией, если вы специально не просите ее передать по ссылке use (&$someVar)

Ответ 2

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

Ответ 3

Это чрезвычайно полезно в некоторых частных случаях. Например

Server::create('/')
    ->addGetRoute('test', function(){
        return 'Yay!';
})

Вышеприведенный фрагмент кода является примером простой маршрутизации в приложении на основе REST.