web-dev-qa-db-ja.com

呼び出し時の参照渡しが削除されました

可能性のある複製:
コール時の参照渡しは廃止されました

インターネット上のどこかに文書化されているかもしれませんが、私の問題の解決策を見つけることができません。 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;
            }
        }
    }
}

51
Sam Smith

呼び出し時間参照渡しのみが削除されます。だから変更:

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

これに:

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

&$thisは、とにかくPHP4の後は決して必要ではありません。

参照によって$ clientを絶対に渡す必要がある場合は、代わりに関数($ func)シグネチャを更新します(function func(&$client) {

91
Explosion Pills