将数组作为参数列表传递给类构造器
问题描述:
我想创建一个类对象并将其参数作为数组传递。将数组作为参数列表传递给类构造器
例如:
$array = array (
'param1' => 123,
'param1' => 456,
'param2' => 789
);
必须转化为设置一个数组列表,并传递给构造:
$a = new A();
答
随着call_user_func_array http://php.net/call_user_func_array
<?php
class A {
public function __construct () {
print_r (func_get_args ()) ;
}
}
$A = new A();
$params = array ('param' => 'value' , 'p1' => 'val') ;
call_user_func_array (array ($A , '__construct') , $params) ;
答
你可以使用反射
<?php
class A {
public function __construct () {
print_r (func_get_args ()) ;
}
}
$reflection = new ReflectionClass('A');
$reflection->newInstanceArgs(array('a' , 'b')) ;
答
<?php
class A
{
public function __construct($var=array()) { print_r($var); }
}
$a=new A(array('foo','bar','baz'));
?>
构造函数被调用两次,但我不需要它。 – vvsh 2011-12-13 22:17:38