2011-12-13 148 views
0

我想创建一个类对象并将其参数作为数组传递。将数组作为参数列表传递给类构造器

例如:

$array = array (
    'param1' => 123, 
    'param1' => 456, 
    'param2' => 789 
); 

必须转化为设置一个数组列表,并传递给构造:

$a = new A(); 

回答

1

随着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) ; 
+0

构造函数被调用两次,但我不需要它。 – vvsh 2011-12-13 22:17:38

0

你可以使用反射

<?php 
     class A { 

       public function __construct () { 
        print_r (func_get_args ()) ; 
       } 

     } 

     $reflection = new ReflectionClass('A'); 
     $reflection->newInstanceArgs(array('a' , 'b')) ; 
0
<?php 
class A 
{ 
    public function __construct($var=array()) { print_r($var); } 
} 

$a=new A(array('foo','bar','baz')); 
?> 
相关问题