2012-09-07 8 views
49

可能性の重複削除されました:それは、インターネット上のどこかに文書化されてもよいが
Call-time pass-by-reference has been deprecatedコール時には、参照渡し

を、私は私の問題への解決策を見つけることができません。 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; 
      } 
     } 
    } 
} 

以下は問題のコードです。

+0

あなただけのアンパサンドを削除した場合はどうなりますか? –

+0

私は125行目で以下を取得します。 **厳密な基準:参照のみで変数を渡す必要があります。** -Nick –

+0

(英語の場合は、$ read、$ write = NULL、$ except、$ tv_sec = 5) @xNickD:まったく無関係のようです。 – newacct

答えて

91

通話時間参照渡しのみが削除されます。だから、変更します。これに

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

を:

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

&$this PHP4のとにかく期間の後に必要に応じてはいけません。

あなたは絶対に$クライアントが参照渡しする必要がある場合は、機能を更新($ FUNC)署名の代わりに(function func(&$client) {

+0

こんにちは、爆発薬、 - 私がそうするなら、奇妙なことに私はより多くのエラーを出します。 **厳密な基準:参照のみで変数を渡す必要があります** 私は何をすべきか分かりません。それは私を混乱させる。 :\ –

+0

こんにちは、ポストのおかげで、私はPHPの人ではないが、エラーを示したワードプレスのテーマで働いて、私はあなたのテクニックを使用して修正されました。 '&$ this''は$ thisを知っていますが、'&$ this'の後に何が起こるのでしょうか? – Nofel

+0

PHP4を使用していない限り、あなたは '&$ this'を必要としません。あなたがPHP 5のように遠くまで使っていても、あなたはそれを必要とすべきではありません。これはオブジェクトの自己参照 '$ this'が参照渡しされていることを確認するための古いメソッドですが、すでにオブジェクト参照であるため、不要です。 –