2012-09-07 12 views
49

Powiel możliwe:
Call-time pass-by-reference has been deprecatedCall razem przejść przez odwołanie został usunięty

Chociaż może to być udokumentowane gdzieś w internecie, nie mogę znaleźć rozwiązania mojego problemu . Od czasu aktualizacji PHP 5.4, pass-by-referencje zostały usunięte.

Teraz mam problem z tą sekcją kodu i mam nadzieję, że ktoś może zobaczyć, co próbuję zrobić z nią, aby mogli mi pomóc w rozwiązaniu mojego problemu pass-by-reference.

Poniżej znajduje się kod w pytaniu:

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

Co się stanie, jeśli po prostu usunąć ampersandy? –

+0

Otrzymuję następujące, w linii 125; która jest 'if (socket_select ($ read, $ write = NULL, $ except = NULL, $ tv_sec = 5) <1)' ** Ścisłe standardy: tylko zmienne powinny być przekazywane przez odniesienie ** -Ten –

+0

@xNickD: wydaje się zupełnie niepowiązany. – newacct

Odpowiedz

91

Jedynie czas połączenia przejazd przez referencję jest usuwany. Tak zmienić:

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

do tego:

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

&$this nigdy nie powinny być potrzebne po PHP4 w każdym razie okres.

Jeśli koniecznie trzeba $ klienta, aby być przekazywane przez referencję, zaktualizuj function ($ funkcjono) podpis zamiast (function func(&$client) {)

+0

Witaj, Pigułki wybuchowe, - O dziwo, dostaję więcej błędów, jeśli robię takie. ** Ścisłe standardy: tylko zmienne powinny być przekazywane przez odniesienie ** Nie jestem pewien, co robić. To mnie zdezorientowało. : \ –

+0

Cześć, Dzięki za post, nie jestem osobą PHP, ale pracuję nad motywem wordpress, który pokazał błąd i naprawiłem używając waszej techniki. Co to jest '& $ this' Znam $ this, ale co się dzieje po' & $ this'' – Nofel

+0

Jeśli nie używasz php 4, co jest wątpliwe, nie potrzebujesz '& $ this'. Nawet jeśli używasz już z PHP 5, nie powinieneś go potrzebować. Jest to po prostu stara metoda upewnienia się, że odwołanie do obiektu '$ this' zostało przekazane przez odniesienie, ale ponieważ jest to już odniesienie do obiektu, nie jest potrzebne. –

Powiązane problemy