Luk*_*uke 2 php underscore.php
我刚刚升级到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)
至少可以说是笨拙的.有没有更好的办法?
我相信你得到了一个E_STRICT错误,看起来这已经成为一个问题很长一段时间了:
https://github.com/brianhaveri/Underscore.php/issues/4
Underscore.php在几年内没有更新,所以我不会屏住呼吸,他们很快就会解决这个问题.
E_STRICT仅成为E_ALLPHP 5.4的一部分.这可以解释为什么自升级以来它一直出现.
更新:看看Underscore.php的这个分支,它修复了这些PHP 5.4+错误:
https://github.com/JonathanAquino/Underscore.php
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |