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

时间:2013-03-03 16:54:10

标签: php

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

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

$foo();

为什么要这样做而不只是:

function foo()
{
    echo 'foo';
}

foo();

3 个答案:

答案 0 :(得分:11)

它们在某些方面很有用。我个人使用它们是因为它们比实际功能更容易控制。

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

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

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

答案 1 :(得分:2)

它也常用于将callbacks传递给array_map等许多其他功能

答案 2 :(得分:0)

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

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

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