我知道call_user_func_array的存在,但我不相信你可以用它来构建一个类(如果可以,你怎么做?)。只要我没有弄错,你如何用数组作为参数实例化一个类?
例如:
class Test {
public function __construct($var1, $var2) {
// do something
}
}
我将如何使用它实例化它: 数组(“var1_data”,“var2_data”)
答案 0 :(得分:1)
class Test {
public function __construct(array $params) {
// ...
}
}
除非你真的需要,否则不要使用“魔法”。
编辑:
答案 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
}