Ich versuche, eine Warteschlange im Stil von Command Pattern zu implementieren, und ich weiß nicht, wie ich Argumente an den Konstruktor des Objekts übergeben kann.
Mein 'Command'-Muster speichert die Objekte in einer Datenbank, in der ich eine Tabelle habe queue_items
meine 'Command'-Objekte zu speichern, mit den Feldern class
, method
, constructor_arguments
(gespeichert als indiziertes Array), method_arguments
(gespeichert als indiziertes Array), und object_type
(das ist enum{'instance','static}
).
Si object_type
Instanz" ist, instanziere ich das Objekt mit dem Schlüsselwort "new". Wenn object_type
'statisch' ist, dann rufe ich einfach mit forward_static_call_array()
.
Wenn ich keine Konstruktorargumente habe, kann ich einfach etwas wie dieses verwenden:
$instance = new $class_name(); //NOTE: no arguments in the constructor
$result = call_user_func_array(array($instance, $method_name), $method_arguments);
Aber wenn ich die Werte aus der Datei constructor_arguments
in die __construct()
Ich kann keine Funktion finden, mit der ich dies tun kann.
Ich möchte das indizierte Array beibehalten und mich nicht auf spezialisierte Konstruktoren verlassen, damit ich meine eigenen Klassen und die Klassen von Drittanbietern, die ich verwende, um z. B. ein assoziatives Array als einziges Argument in einem Konstruktor zu verwenden, nicht umschreiben muss.
Weiß jemand, wie man ein indiziertes Array direkt in __construct
in Anlehnung an call_user_func_array()
? Oder kann es einfach nicht gemacht werden?
Drew J. Sonne.