Vorbei array von Parametern auf Objekt-Konstruktor
Wie kann ich den Aufruf einer Objekt-Konstruktor übergeben ein array von Parametern so, dass:
$array = array($param1, $param2);
Ich werde in der Lage sein zu rufen
$abc = new Abc($param1, $param2);
wenn man bedenkt, dass ich nicht weiß, wie viele Parameter können eingestellt werden in dem array.
Gibt es so etwas wie call_object('Abc', array($param1, $param2))
?
- warum nicht einfach das array übergeben ?
new Abc($array)
? - Vielleicht ist Jeff nicht schreiben/Kontrolle dieser Klassen...
- vielleicht, wenn Sie hatte, formulierte Ihre Frage besser oder mehr ein Beispiel würden Sie nicht so viele "falsche" Antworten ....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der beste Weg ist, um ein array oder ein Objekt, in dem die Argumente und Sie übergeben Sie einfach das array/Objekt
Andere Möglichkeit wäre die Verwendung von Reflektion ( http://de2.php.net/Reflection ) mit newInstanceArgs ( http://de2.php.net/manual/de/reflectionclass.newinstanceargs.php )
Wie wäre es mit ... (splat-operator)?
PHP 5.6 erforderlich ist.
Ideal ist, definieren Sie Ihren Konstruktor ein array.
Wenn Sie dies nicht tun können, gibt es eine Möglichkeit, dies zu umgehen. Wenn alle Parameter des Konstruktors sind optional, Sie könnten etwas tun, wie dies mit
call_user_func_array
:Diese Ergebnisse in Ihrem Konstruktor wird zweimal durchgeführt: einmal ohne Parameter und einmal mit denen im array. Sie müssen entscheiden, ob diese für Ihre Anwendung geeignet ist.
Vorausgesetzt, Sie sind in der Lage, ändern Sie Ihre Objekte Konstruktoren, ein Muster wie dieses ist nicht ungewöhnlich, sondern erfordert assoziative arrays als input: