Передача массива в конструктор класса в виде списка параметров - PullRequest
0 голосов
/ 14 декабря 2011

Я хочу создать объект класса и передать его параметры в виде массива.

Например:

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

, который должен быть преобразован в список настроек массива и передан вконструктор:

$a = new A();

Ответы [ 3 ]

1 голос
/ 14 декабря 2011

С помощью 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 голосов
/ 14 декабря 2011
<?php
class A
{
  public function __construct( $var=array() ) { print_r( $var ); }
}

$a=new A( array( 'foo','bar','baz' ) );
?>
0 голосов
/ 14 декабря 2011

Вы можете использовать отражение

<?php
       class A {

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

       }

       $reflection = new ReflectionClass('A');
       $reflection->newInstanceArgs(array( 'a' , 'b' )) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...