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


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

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

$foo();

你为什么要这样做而不仅仅是:

function foo()
{
    echo 'foo';
}

foo();

12169
2018-03-03 16:54


起源

看到 匿名函数 - Federkun
你会这样做,这样你就可以从对象到对象传递该函数... - Lix
有时匿名函数非常有用。例如,您有一个表单,您需要验证一些字段。你确定,你不需要在任何地方使用这个函数,但是在这里你需要传递可调参数。在这种情况下,IMO匿名功能是可行的。 - Eugene
除了将它们存储在变量中之外还有其他便利性大多数情况下,它们用于通过一次性回调不会混淆全局命名空间。 - mario


答案:


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

而且,匿名函数可以这样做:

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

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


11
2018-03-03 16:58



在循环中使用它的一个例子可能很有用。 - MichaelRushton
使用命令,救命! - Oritm
fyi - 如果你正在寻找最佳答案,我会说@Laxus上面的高评价也非常有帮助(如果不是更多的话) - cwd


它也经常被用来通过 回调 对诸如此类的功能 array_map 和许多其他人


2
2018-03-03 17:10





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

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

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


0
2017-10-26 01:12