En Python, vous pouvez emballer et déballer des arguments comme ceci:emballage Argument et le déballage lors de l'instanciation d'une nouvelle instance de classe en PHP
def myfunction(arg1, arg2, arg3):
pass
mydict = dict(arg1='foo', arg2='bar', arg3='baz')
myfunction(**mydict)
mylist = ['foo', 'bar', 'baz']
myfunction(*mylist)
Maintenant, est-il quelque chose de similaire en PHP? J'ai une classe qui est passée à une fonction, avec un tableau associatif extrait d'un enregistrement de base de données. Je veux créer une instance de la classe, qui accepte les arguments nommés comme les clés du tableau. Peut-il être fait?
EDIT
Ok, donc je ne doute pas formulé ma question correctement. Je voulais instancier dynamiquement une nouvelle classe quand je ne connaissais ni le nom de la classe, ni le nombre d'arguments à l'avance.
J'ai trouvé la réponse que:
http://php.net/manual/en/book.reflection.php
Voici la solution:
class MyClass {
public function __construct($var1, $var2, $var3) {
echo "$var1\n";
echo "$var2\n";
echo "$var3\n";
}
}
$reflector = new ReflectionClass('MyClass');
$args = array('var1'=>'foo', 'var2'=>'baz', 'var3'=>'bar');
$instance = $reflector->newInstanceArgs($args);
C'est ce que j'ai fait par le passé. Passez simplement un tableau à la fonction (tant que la fonction est autorisée) – Matthew