gpt4 book ai didi

php - Underscore.php 抛出非静态方法 __::invoke() 不应被静态调用

转载 作者:行者123 更新时间:2023-12-02 04:44:05 25 4
gpt4 key购买 nike

我刚刚升级到 PHP 5.5.3,我注意到 Underscore.php 抛出了一个奇怪的错误:

Non-static method __::invoke() should not be called statically

导致此错误的相关代码如下所示:

$params = \__::invoke( $params, function( $value ) {
...
} );

仔细阅读 Underscore.php 源代码,我不明白为什么会抛出此错误,因为对 invoke 的调用应由 __callStatic 处理程序处理:

public static function __callStatic($name, $arguments) {
$mixins =& self::getInstance()->_mixins;
return call_user_func_array($mixins[$name], $arguments);
}

我不想弄乱 PHP 中的错误报告设置,因为这意味着在整个堆栈中更改 PHP 设置。

我目前的解决方法是:

$__ = new \__();

$params = $__->invoke( $params, function( $value ) {
...
} );

这至少可以说是笨拙的。有没有更好的办法?

最佳答案

我相信您遇到了一个 E_STRICT 错误,而且这个问题似乎已经存在了很长一段时间:

https://github.com/brianhaveri/Underscore.php/issues/4

Underscore.php 已经有几年没有更新了,所以我相信他们很快就会修复这个问题。

从 PHP 5.4 开始,

E_STRICT 仅成为 E_ALL 的一部分。这可以解释为什么它只在您升级后才出现。

更新:看看这个 Underscore.php 的分支,它修复了这些 PHP 5.4+ 错误:

https://github.com/JonathanAquino/Underscore.php

关于php - Underscore.php 抛出非静态方法 __::invoke() 不应被静态调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20181967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com