2010-08-03 9 views
26

Normalmente, si quiero pasar argumentos de $ myarray a $ algunaFuncion que puedo hacer esto en PHP usandoargumentos pasan de matriz en PHP para el constructor

call_user_func_array($somefunction, $myarray); 

Sin embargo esto no funciona cuando la función se desea call es el constructor de un objeto. Por razones obvias no funciona hacer:

$myobj = new call_user_func_array($classname, $myarray); 

hay algo bastante elegante, que hace el trabajo ?

Respuesta

55

Usted puede utilizar la API de reflexión:

Ejemplo:

$reflector = new ReflectionClass('Foo'); 
$foo = $reflector->newInstanceArgs(array('foo', 'bar')); 
+5

En PHP 5.6 también puede utilizar el argumento de desempaquetar a través de la '' ... '' u operador splat: http://php.net/manual/en/migration56. new-features.php # migration56.new-features.splat – jhuet

+0

el desembalaje es realmente agradable ... –

Cuestiones relacionadas