У меня проблема с магическим методом __call
Следующий код работает хорошо, за исключением случаев, когда в вызове метода есть более одного аргумента. Я пробовал разные решения без какого-либо хорошего результата (просто $args
или implode(', ' $args)
не работает)
public function __call($method, $args) {
if($this->methods[$method] != NULL)
return $this->objects[$this->methods[$method]]->$method($args[0]);
else trigger_error("Call undefined method " . $this->class . "::" . $method, E_USER_ERROR);
}
Это тоже работает, если я напишу это так:
return $this->objects[$this->methods[$method]]->$method($args[0], $args[1], $args[3]);
Но, как вы можете видеть, это не правильно, потому что функция может иметь от 0 до бесконечных аргументов.
Знаете ли вы, как исправить сценарий для нескольких аргументов?