В callback-функции нельзя по человечески передать аргумент по ссылке.
function func($x, &$y) { $y = $x * 2; } $callback = 'func'; $x = 5; call_user_func($callback, $x, &$y); $callback($x, &$y); |
Оба раза это сработает правильно, но оба раза вылетит Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration …. Да, сейчас я побегу модифицировать декларацию call_user_func()
и runtime function name
Параметр allow_call_time_pass_reference
нельзя выключить на время через ini_set()
. Не помогает здесь и @call_user_func(...)
: предупреждение вываливается ни при вызове, а при подключении файла, спасёт только @require(...)
.
А если это библиотека для распространения, то запись в документации подключайте только с отключённым выводом ошибок не лучшая реклама. Единственный вариант — старый добрый eval()
с извинениями и объяснениями в коде.