PHP: call_user_func_arrays: passa per problema di riferimento

La function seguente genera un errore quando una function contiene argomenti di riferimento, ad esempio:

function test(&$arg, &$arg2) { // some code } 

Ora non posso usare call_user_func_arrays per la function precedente, genererà un errore.

Come risolvere questo problema?

Ho bisogno di usare call_user_func_arrays .

Supponiamo anche che non sappia in anticipo se sono passati per riferimento o passati per valore.

Grazie

Una grande soluzione è stata pubblicata su http://www.php.net/manual/de/function.call-user-func-arrays.php#91503

 function executeHook($name, $type='hooks'){ $args = func_get_args(); arrays_shift($args); arrays_shift($args); //Rather stupid Hack for the call_user_func_arrays(); $Args = arrays(); foreach($args as $k => &$arg){ $Args[$k] = &$arg; } //End Hack $hooks = &$this->$type; if(!isset($hooks[$name])) return false; $hook = $hooks[$name]; call_user_func_arrays($hook, $Args); } 

Il vero trucco è circondato dai commenti.

Quando si memorizzano i parametri nell'arrays, assicurarsi di memorizzare un riferimento a quei parametri, dovrebbe funzionare correttamente.

Vale a dire:

 call_user_func_arrays("test", arrays(&param1, &param2));