我在本地运行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'));
同事正在使用PHP 5.4.x的MAMP,并且在闭包调用($my_closure(...);
)上收到“函数名必须是字符串”错误。
我可以使用call_user_func()
或call_user_func_array()
解决此问题,但我想知道为什么此代码不再适用于5.4.x.我认为这要么是5.4.x的变化,要么是MAMP的问题(根据我的经验,更有可能!)。
在php.net上有一个有点相关的bug report讨论无法使用可调用数组,就像我使用闭包一样。 bug的注释确实证实了我在5.3中的工作正常,并且还提到在5.4中实现可调用的数组功能;或许实现引入了回归错误?任何细节/建议将不胜感激。
是的,我很乐意让Vagrant为团队中的每个人提供相同的环境,但是唉,没有骰子。
答案 0 :(得分:0)
让你的朋友仔细检查他是否正在运行5.4。你的语法对于5.3和5.4都是完全正确的(我敢说任何未来的PHP版本)
您可以在PHP 5.4 here中测试您的代码(运行echo phpversion();
以确认它确实是5.4)。正如您将看到它不会引起任何错误。
答案 1 :(得分:0)