If I am overloading the __call
method in a PHP class, how could I call the actual method if my code doesn't do something else? For example:
public function __call($name, $arguments)
{
if($name == 'tom')
{
$this->doName($name);
}
else
{
// Something here to carry on the __call maybe:
// $this->$name($arguments);
}
}
The issue is that the $arguments
are passed through as an array, how could I continue to pass them through info $this->$name($arg, $arg, $arg ...)
is there a right way to do this?
You can call:
return parent::__call($name, $arguments);
Or am I misunderstanding what you're asking?
Edit:
And if you mean you want to call $this->$name()
to try to trigger parent::__call()
, it won't work. You'll wind up in an infinite loop until the stack overflows and php crashes (in other words, it's bad)...
You can use this:
call_user_func_array("self::method", $parameters)
http://php.net/manual/en/function.call-user-func-array.php is what you are looking for.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With