php-调用时传递引用已被删除

可能重复:
调用时传递引用已被弃用

尽管它可能在Internet上的某个地方记录了下来,但我找不到解决问题的方法。 自PHP 5.4更新以来,传递引用已被删除。

现在,我对这部分代码有疑问,希望我能看到我在用它做什么,以便他们可以为我提供解决我的通过引用问题的解决方案。

下面是有问题的代码:

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;
            }
        }
    }
}

Sam Smith asked 2020-01-23T14:56:42Z
1个解决方案
91 votes

仅删除呼叫时间通过引用。 所以改变:

call_user_func($func, &$this, &$client ...

对此:

call_user_func($func, $this, $client ...

无论如何,PHP4之后永远都不需要function func(&$client) {

如果您绝对需要通过引用传递$ client,请更新功能($ func)签名(function func(&$client) {

Explosion Pills answered 2020-01-23T14:57:09Z
translate from https://stackoverflow.com:/questions/12322811/call-time-pass-by-reference-has-been-removed