我正在本地运行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上有一个相关的错误报告,讨论了无法像我使用闭包那样使用可调用数组的问题。该错误报告的评论确实确认了我在5.3中所做的工作很好,并提到在5.4中实现可调用数组功能;也许实现引入了回归错误?任何详细信息/建议将不胜感激。是的,我很想为团队中的每个人使用Vagrant,以便拥有相同的环境,但很遗憾,这是不可能的。
$my_closure
。这不是完整的代码,对吧? - meze