PHP如何调用parent :: __ call()并传入参数

时间:2010-08-11 20:22:41

标签: php

如果我在PHP类中重载__call方法,如果我的代码不执行其他操作,我怎么能调用实际方法?例如:

public function __call($name, $arguments)
{
    if($name == 'tom')
    {
        $this->doName($name);
    }
    else
    {
        // Something here to carry on the __call maybe:
        // $this->$name($arguments);
    }
}

问题是$arguments是作为数组传递的,我怎么能继续通过信息传递它们$this->$name($arg, $arg, $arg ...)有正确的方法吗?

3 个答案:

答案 0 :(得分:19)

您可以致电:

return parent::__call($name, $arguments);

或者我误解了你的要求?

修改

如果您的意思是想要致电$this->$name()尝试触发parent::__call(),那么它将无效。你将陷入无限循环,直到堆栈溢出并且php崩溃(换句话说,它很糟糕)......

答案 1 :(得分:6)

您可以使用:

call_user_func_array("self::method", $parameters)

答案 2 :(得分:5)