我在本地运行 PHP 5.3.15(OSX 上的自定义 apache/php/mysql 堆栈),并且有以下代码,它工作得很好:
$my_closure = function($something, $other) use (&$foo, $bar) {
// watcha doin'? ... stuff.
};
$my_closure('hello', array('one', 'two'));
$my_closure(...);
一位同事正在将 MAMP 与 PHP 5.4.x 一起使用,并且在闭包调用 ( )中收到“函数名称必须是字符串”错误。
我可以使用call_user_func()
or来解决这个问题call_user_func_array()
,但我想知道为什么这段代码不再适用于 5.4.x。我认为这要么是 5.4.x 的变化,要么是 MAMP 的问题(根据我的经验,更有可能!)。
php.net 上有一个相关的错误报告,它讨论了无法像使用闭包一样使用可调用数组。该错误的评论确实证实了我在 5.3 中所做的工作正常,并且还提到了在 5.4 中实现可调用数组功能;也许实现引入了回归错误?任何细节/建议将不胜感激。
是的,我很乐意为团队中的每个人使用 Vagrant 以拥有相同的环境,但可惜,没有骰子。