Почему появляется ошибка «ожидается, что эта ссылка, значение задано»?

Он срабатывает, когда я пытаюсь вызвать функцию с аргументом по ссылке

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 } 

Другой проход по эталонной работе-раунды устарел.