Он срабатывает, когда я пытаюсь вызвать функцию с аргументом по ссылке
function test(&$a) ...
через
call_user_func('test', $b);
call_user_func
может передавать параметры только по значению, а не по ссылке. Если вы хотите пройти по ссылке, вам нужно вызвать функцию напрямую или использовать call_user_func_array
, которая принимает ссылки (однако это может не работать в PHP 5.3 и выше, в зависимости от того, какая часть руководства выглядит).
Из руководства для call_user_func ()
Обратите внимание, что параметры для call_user_func () не передаются по ссылке.
Итак, есть ответ. Тем не менее, есть способ обойти это, снова прочитав руководство
call_user_func_array('test', array(&$b));
Должен иметь возможность передать его по ссылке.
У меня была такая же проблема, меняя (в моем случае):
$result = call_user_func($this->_eventHandler[$handlerName][$i], $this, $event);
в
$result = call_user_func($this->_eventHandler[$handlerName][$i], &$this, &$event);
похоже, отлично работает в php 5.3.
Это даже не обходное решение, я думаю, это просто то, что сказано 🙂
Вам нужно установить переменную равной результату функции, например …
$b = call_user_func('test', $b);
и функция должна быть записана следующим образом …
function test($a) { ... return $a }
Другой проход по эталонной работе-раунды устарел.