Функция ниже генерирует ошибку, когда функция содержит ссылочные аргументы, например:
function test(&$arg, &$arg2) { // some code }
Теперь я не могу использовать call_user_func_array
для вышеприведенной функции, он будет генерировать ошибку.
Как решить эту проблему?
Мне нужно использовать call_user_func_array
.
Также предположим, что я не знаю заранее, передаются ли они по ссылке или передаются по значению.
благодаря
Большое обходное решение было опубликовано на http://www.php.net/manual/de/function.call-user-func-array.php#91503
function executeHook($name, $type='hooks'){ $args = func_get_args(); array_shift($args); array_shift($args); //Rather stupid Hack for the call_user_func_array(); $Args = array(); foreach($args as $k => &$arg){ $Args[$k] = &$arg; } //End Hack $hooks = &$this->$type; if(!isset($hooks[$name])) return false; $hook = $hooks[$name]; call_user_func_array($hook, $Args); }
Фактический взлом окружен комментариями.
При сохранении параметров в массиве убедитесь, что вы сохраняете ссылку на эти параметры, он должен работать нормально.
То есть:
call_user_func_array("test", array(¶m1, ¶m2));