Я использую магию __call в моем коде mvc для создания автозагрузки фреймворка форм, но я столкнулся с проблемой, я надеюсь, у кого-нибудь из здесь есть обходной путь.
__callмагия принимает два параметра: $ methodName и $ arguments.Аргументы возвращаются как массив аргументов, которые вы вызвали.Обычно эта функция вызывается для методов, которые вы можете сделать как таковые, поэтому передайте эти аргументы в функцию:
call_user_func_array($methodName, $arguments);
И это распространит сигнатуру методов с аргументами.Я пытаюсь сделать что-то более сложное.Я пытаюсь распространить конструктор классов таким же образом, имея возможность посылать, возможно, массив аргументов с разделителями-запятыми в конструктор классов или просто посылать аргументы напрямую, но оба из них не дают требуемого результата.Когда я отправляю взорванный массив в конструктор, PHP думает, что это строка, а когда я отправляю массив, он думает, что это массив.
Это код, который я использую atm:
public function __call($method, $args){
return $this->init_element(new $method($args['name'], $args['value'], $args['opts']));
}
Что, если у меня было 4 аргумента, чтобы передать хотя?Есть ли способ, которым я могу заставить его динамически заполнить конструктор так же, как вы можете для функции, использующей call_user_func_array ()?
Я мог бы использовать для этого функцию attribute (), но мне бы очень хотелось иметь возможностьсделать это, как я могу с функциями.
Заранее спасибо,