Например, у вас, похоже, есть синтаксическая ошибка (так как Zend_Controller_Router_Route_Regex
должна быть строкой.
Таким образом, можно подумать, что это сработает:
$route = call_user_func_array(array('Zend_Controller_Router_Route_Regex', '__construct'), $args);
Однако, насколько я знаю, первый элемент массива (первый параметр) может быть либо строкой при вызове метода статического класса, либо экземпляром вашего класса для любого метода. Здесь тоже нет дела. Таким образом, я бы просто сделал это так:
$route = new Zend_Controller_Router_Route_Regex;
call_user_func_array(array('Zend_Controller_Router_Route_Regex', 'setOptions'), $args);
Возможно, вам придется использовать array($args)
вместо $args
в зависимости от типа этой переменной.
РЕДАКТИРОВАТЬ Нет, я не прав. Для маршрутов нет функции setOptions()
. Позвольте мне кое-что проверить ...
EDIT2 Довольно уродливый хак, который я нашел в руководстве PHP относительно call_user_func_array()
, следующий:
$route = new Zend_Controller_Router_Route_Regex;
call_user_func_array(array($route, '__construct'), $args);
Однако я не проверял это, и оно может не работать (если оно вообще может работать) в зависимости от реализации конструктора (принимает ли он параметры, не передаваемые ему? Просто устанавливает класс или выполняет другие дела тоже сделаны?). Скажите пожалуйста, сработало ли это ...