Os parâmetros para call_user_func()
e call_user_func_array()
não são passados por referência.
$function = function (&$p) {
echo $p;
};
$param = '123';
call_user_func($function, $param);
// or
call_user_func_array($function, [$param]);
Você receberá uma mensagem de erro como PHP Warning: Parameter 1 to {closure}() expected to be a reference, value given
.
Para corrigir isso, você pode usar o seguinte:
$function($param);
// or
call_user_func_array($function, [&$param]);