为什么在PHP中将函数存储为变量?


Why store function as variable in PHP

我在php文档中见过这种做法:

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

为什么你要这样做,而不是直接:

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

它们在几个方面很有用。我个人使用它们是因为它们比实际的函数更容易控制。

但是匿名函数也可以这样做:

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

匿名函数可以从外部作用域"导入"变量。最好的部分是,在循环中使用它是安全的(不像JavaScript),因为它需要变量的副本来与函数一起使用,除非您特别告诉它通过引用传递use (&$someVar)

它也经常用于传递回调函数,如array_map和许多其他

在某些特殊情况下非常有用。例如

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

上面的代码片段是一个基于REST的应用程序中的简单路由示例。