Если я перегружаю метод __ 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 ...)
есть ли правильный способ сделать это?
Вы можете позвонить:
return parent::__call($name, $arguments);
Или я неправильно понимаю, о чем вы спрашиваете?
Изменить:
И если вы имеете в виду, что хотите вызвать $ this -> $ name ()
, чтобы попытаться вызвать parent :: __ call ()
, это не сработает. Вы попадете в бесконечный цикл до тех пор, пока стек не переполнится и php не выйдет из строя (другими словами, это плохо) ...
http://php.net/manual/en/function.call-user-func-array.php - это то, что вы ищете.
Вы можете использовать это:
call_user_func_array("self::method", $parameters)