Почему появляется ошибка "ожидается, что эта ссылка, значение задано"?
Он срабатывает, когда я пытаюсь вызвать функцию с аргументом по ссылке
function test(&$a) ...
через
call_user_func('test', $b);
Ответ 1
call_user_func может только передавать параметры по значению, а не по ссылке. Если вы хотите перейти по ссылке, вам нужно вызвать функцию напрямую или использовать call_user_func_array, который принимает ссылки (однако это может не сработать в PHP 5.3 и более поздних версиях, в зависимости от того, на какую часть руководства смотрят).
Это даже не обходное решение, я думаю, он просто делает то, что сказано: -)
Ответ 4
Вам нужно установить переменную равной результату функции, например...
$b = call_user_func('test', $b);
и функция должна быть записана следующим образом:
function test($a) {
...
return $a
}
Другой проход по эталонной работе-раунды устарел.
Ответ 5
Вы могли бы рассмотреть концепцию замыкания со ссылочной переменной, скрытой в объявлении "use". Например:
$note = 'before';
$cbl = function( $msg ) use ( &$note )
{
echo "Inside callable with $note and $msg\n";
$note = "$msg has been noted";
};
call_user_func( $cbl, 'after' );
echo "$note\n";
Обходной путь для вашей первоначальной проблемы, но если у вас есть функция, которая требует вызова по ссылке, вы можете обернуть вызываемое закрытие вокруг нее, а затем выполнить закрытие с помощью call_user_func().