我刚刚升级到PHP 5.5.3,我注意到Underscore.php抛出一个奇怪的错误:
Non-static method __::invoke() should not be called statically
Run Code Online (Sandbox Code Playgroud)
导致此错误的问题代码如下所示:
$params = \__::invoke( $params, function( $value ) {
...
} );
Run Code Online (Sandbox Code Playgroud)
通过Underscore.php源代码,我不明白为什么抛出此错误,因为调用invoke应该由__callStatic处理程序处理:
public static function __callStatic($name, $arguments) {
$mixins =& self::getInstance()->_mixins;
return call_user_func_array($mixins[$name], $arguments);
}
Run Code Online (Sandbox Code Playgroud)
我不想搞乱PHP中的错误报告设置,因为这意味着在整个堆栈中改变PHP设置.
我目前的解决方法是:
$__ = new \__();
$params = $__->invoke( $params, function( $value ) {
...
} );
Run Code Online (Sandbox Code Playgroud)
至少可以说是笨拙的.有没有更好的办法?