2 Stimmen

Wie kann ich eine Klasse mit einer Funktion im Stil der "Funktionsbehandlung" instanziieren?

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X