51

重複の可能性:
呼び出し時の参照渡しは廃止されました

インターネット上のどこかに文書化されている可能性がありますが、問題の解決策が見つかりません。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;
            }
        }
    }
}

.

4

1 に答える 1

91

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

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

これに:

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

&$thisとにかくPHP4の期間の後は必要ありません。

$client を参照渡しする必要がある場合は、代わりに関数 ($func) の署名を更新します ( function func(&$client) {)

于 2012-09-07T17:36:05.807 に答える