魔术方法__Call不适用于多个参数

时间:2011-12-31 01:48:30

标签: php magic-methods

我遇到了魔法__call

的问题

以下代码运行良好,除非在方法调用中有多个参数。我尝试了不同的解决方案而没有任何好的结果(仅$argsimplode(', ' $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到无限的参数。

您知道如何修复多个参数的脚本吗?

2 个答案:

答案 0 :(得分:8)

return call_user_func_array($this->objects[$this->methods[$method]]->$method, $args);

请参阅http://php.net/call_user_func_array

答案 1 :(得分:0)

试试这个:

public function __call($method, $parameters){

    if (in_array($method, ['get', 'post'])) {
        return $this->$method(...$parameters);
    }
}