Я пытаюсь реализовать очередь в стиле Command Pattern, и я не знаю, как передать аргументы в конструктор объекта.
Мой шаблон 'Command' хранит объекты в базе данных, где у меня естьтаблица queue_items
, в которой хранятся мои объекты 'Command', с полями class
, method
, constructor_arguments
(хранятся в виде индексированного массива), method_arguments
(хранятся в виде индексированного массива) и object_type
(*1000*).
Если object_type
- это «экземпляр», я создаю экземпляр объекта с помощью ключевого слова «new».Если object_type
является «статическим», то я просто выполняю вызов, используя forward_static_call_array()
.
Если у меня нет аргументов конструктора, я могу просто использовать что-то вроде этого:
$instance = new $class_name(); //NOTE: no arguments in the constructor
$result = call_user_func_array(array($instance, $method_name), $method_arguments);
Но , если я хочу передать значения из constructor_arguments
в __construct()
, я не могу найти функцию, позволяющую мне это сделать.
Я хочу сохранить индексированный массиви не полагаться на специализированные конструкторы, так что мне не нужно переписывать свои собственные и сторонние классы, которые я использую для обработки, например, принятия ассоциативного массива в качестве единственного аргумента в конструкторе.
Кто-нибудьзнаете, как передать индексированный массив непосредственно в __construct
в стиле call_user_func_array()
?Или это просто невозможно?
Дрю Дж. Сонн.