使用数组作为参数实例化一个类

时间:2011-11-26 01:23:13

标签: php

我知道call_user_func_array的存在,但我不相信你可以用它来构建一个类(如果可以,你怎么做?)。只要我没有弄错,你如何用数组作为参数实例化一个类?

例如:

class Test {
    public function __construct($var1, $var2) {
        // do something
    }
}

我将如何使用它实例化它:     数组(“var1_data”,“var2_data”)

2 个答案:

答案 0 :(得分:1)

class Test {
    public function __construct(array $params) {
        // ...
    }
}

除非你真的需要,否则不要使用“魔法”。

编辑:

如果您需要的是varagrs,则可以找到答案here

答案 1 :(得分:0)

如果必须有多个构造函数,则应将其命名为__construct以外的其他构造函数,然后定义可接受任意数量参数的__construct方法。在该方法中,您可以确定要使用哪个自定义构造函数。如果你想做的只是允许构造函数传递一个数组而不是一个参数列表,你可以这样做(注意这个例子没有任何错误检查):

public function __construct() {
    $args = func_get_args();
    if(count($args) == 1 && is_array($args[0])) {
        $cArgs = $args[0];
    } else {
        $cArgs = $args;
    }

    __do_construct($cArgs[0], $cArgs[1]);

}

private function __do_construct($arg1, $arg2) {
    // do something
}