Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Call-time pass-by-reference has been removed [duplicate]

Possible Duplicate:
Call-time pass-by-reference has been deprecated

While it may be documented somewhere on the internet, I cannot find a solution to my problem. Since the PHP 5.4 update, pass-by-references have been removed.

Now I have a problem with this section of code, and I hope somebody can see what I'm trying to do with it so that they can possibly help me with a solution to overcome my pass-by-reference problem.

Below is the code in question:

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

.

like image 604
Sam Smith Avatar asked Sep 07 '12 17:09

Sam Smith


1 Answers

Only call time pass-by-reference is removed. So change:

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

To this:

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

&$this should never be needed after PHP4 anyway period.

If you absolutely need $client to be passed by reference, update the function ($func) signature instead (function func(&$client) {)

like image 176
Explosion Pills Avatar answered Sep 20 '22 11:09

Explosion Pills