Passage de tableau de paramètres au constructeur de l'objet
Comment puis-je appeler un constructeur d'objet en passant un tableau de paramètres, de sorte que le fait d'avoir:
$array = array($param1, $param2);
Je vais être en mesure d'appeler
$abc = new Abc($param1, $param2);
considérant que je ne sais pas combien de paramètres peut être définie dans le tableau.
Est-il quelque chose comme call_object('Abc', array($param1, $param2))
?
pourquoi ne pas simplement passer le tableau ?
Peut-être que Jeff n'a pas d'écrire/de contrôle de ces classes...
peut-être que si vous aviez formulé votre question de mieux ou donné plus d'un exemple, tu n'aurais pas eu autant de "mauvaises" réponses ....
new Abc($array)
?Peut-être que Jeff n'a pas d'écrire/de contrôle de ces classes...
peut-être que si vous aviez formulé votre question de mieux ou donné plus d'un exemple, tu n'aurais pas eu autant de "mauvaises" réponses ....
OriginalL'auteur Shoe | 2011-12-16
Vous devez vous connecter pour publier un commentaire.
Le meilleur moyen est d'utiliser un tableau ou un objet qui stocke les arguments et vous venez de passer de tableau/objet
Une autre solution serait l'utilisation de la Réflexion ( http://de2.php.net/Reflection ) à l'aide de newInstanceArgs ( http://de2.php.net/manual/de/reflectionclass.newinstanceargs.php )
OriginalL'auteur DarkDevine
Comment sur l'utilisation de ... (splat opérateur)?
PHP 5.6 est nécessaire.
OriginalL'auteur augusthur
L'idéal est de définir votre constructeur de prendre un tableau.
Si vous ne pouvez pas faire cela, il existe une solution de contournement possible. Si tous paramètres du constructeur sont en option, vous pourriez faire quelque chose comme cela avec
call_user_func_array
:Cela se traduit par le constructeur en cours d'exécution deux fois: une fois avec pas de paramètres, et une fois avec ceux de la matrice. Vous aurez à décider si c'est approprié pour votre application.
les paramètres du constructeur sont en option." Ce n'est pas vraiment une bonne pratique: c'est une solution de contournement.
OriginalL'auteur lonesomeday
En supposant que vous êtes en mesure de modifier vos objets les constructeurs, un motif comme ce n'est pas rare, mais nécessite des tableaux associatifs comme entrée:
OriginalL'auteur Michael Berkowski