2010-08-03 11 views
26

Normalmente, se voglio passare gli argomenti da $ myarray a $ someFunction posso fare questo in php usandoargomenti passano da array in php per costruttore

call_user_func_array($somefunction, $myarray); 

Tuttavia questo non funziona quando la funzione si vuole call è il costruttore di un oggetto. Per ragioni abbastanza ovvie non funziona a che fare:

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

c'è qualcosa di abbastanza elegante che non lavorare?

risposta

55

È possibile utilizzare l'API Reflection:

Esempio:

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

In PHP 5.6 è anche possibile utilizzare l'argomento disimballaggio tramite la '' ... '' o l'operatore splat: http://php.net/manual/en/migration56. new-features.php # migration56.new-features.splat – jhuet

+0

il disimballaggio è davvero bello ... –

Problemi correlati