虽然可能在互联网上的某处记录,但我找不到解决问题的方法。自PHP 5.4更新以来,已删除了pass-by-references。
现在我对这部分代码有疑问,我希望有人可以看到我正在尝试用它做什么,这样他们就可以帮助我找到一个解决方案来克服我的传递引用问题。 / p>
以下是有问题的代码:
public function trigger_hooks( $command, &$client, $input ) {
if( isset( $this->hooks[$command] ) ) {
foreach( $this->hooks[$command] as $func ) {
PS3socket::debug( 'Triggering Hook \'' . $func . '\' for \'' . $command . '\'' );
$continue = call_user_func( $func, &$this, &$client, $input );
if( $continue === FALSE ) {
break;
}
}
}
}
答案 0 :(得分:91)
仅删除通话时间传递引用。所以改变:
call_user_func($func, &$this, &$client ...
对此:
call_user_func($func, $this, $client ...
在PHP4之后永远不需要 &$this
。
如果您绝对需要通过引用传递$ client,请更新函数($ func)签名(function func(&$client) {
)