PHP Как вызвать parent:: __ call() и передать аргументы
Если я перегружаю метод __call
в классе PHP, как я могу вызвать фактический метод, если мой код не делает что-то еще? Например:
public function __call($name, $arguments)
{
if($name == 'tom')
{
$this->doName($name);
}
else
{
// Something here to carry on the __call maybe:
// $this->$name($arguments);
}
}
Проблема в том, что $arguments
передается как массив, как я могу продолжать передавать их через info $this->$name($arg, $arg, $arg ...)
, есть ли правильный способ сделать это?
Ответы
Ответ 1
Вы можете позвонить:
return parent::__call($name, $arguments);
Или я не понимаю, что вы спрашиваете?
Edit:
И если вы хотите, чтобы вы вызывали $this->$name()
, чтобы попытаться запустить parent::__call()
, это не сработает. Вы завершаетесь бесконечным циклом до тех пор, пока стек не переполнится и не сработает php (другими словами, это плохо)...
Ответ 2
Вы можете использовать это:
call_user_func_array("self::method", $parameters)
Ответ 3
http://php.net/manual/en/function.call-user-func-array.php - это то, что вы ищете.