Dynamische Instanzerstellung in PHP mit einem String
In PHP gibt es Situationen, in denen Sie möglicherweise eine Instanz einer Klasse mit erstellen müssen eine Zeichenfolge, anstatt eine lange Switch-Anweisung zu verwenden, um zwischen mehreren Klassen zu wählen. Nehmen wir zum Beispiel an, wir haben die folgenden zwei Klassen:
class ClassOne {} class ClassTwo {}
Und wir erhalten eine Zeichenfolge, die entweder „Eins“ oder „Zwei“ sein kann. Anstatt eine Switch-Anweisung zu verwenden wie:
switch ($str) { case "One": return new ClassOne(); case "Two": return new ClassTwo(); }
Wir können eine Instanz dynamisch mit dem folgenden Code erstellen:
$str = 'One'; $class = 'Class'.$str; $object = new $class();
Die Variable $class wird dynamisch durch Verketten der Zeichenfolge „Class“ erstellt ' mit dem Wert von $str. Dann verwenden wir den Operator new, um eine Instanz dieser Klasse zu erstellen. Mit dieser Technik können wir Instanzen von Klassen basierend auf einer Zeichenfolgeneingabe dynamisch erstellen.
Der gleiche Ansatz kann mit Namespaces verwendet werden, indem der vollständig qualifizierte Klassenname angegeben wird:
$class = '\Foo\Bar\MyClass'; $instance = new $class();
Zusätzlich PHP unterstützt das dynamische Aufrufen von Variablenfunktionen und -methoden mit der folgenden Syntax:
$func = 'my_function'; $parameters = ['param2', 'param2']; $func(...$parameters); // calls my_function() with 2 parameters; $method = 'doStuff'; $object = new MyClass(); $object->$method(); // calls the MyClass->doStuff() method. // or in one call (new MyClass())->$method();
Es ist jedoch wichtig zu beachten, dass das dynamische Erstellen von Variablen im Allgemeinen eine schlechte Praxis ist und sollten nach Möglichkeit vermieden werden. Arrays sind in den meisten Fällen eine bessere Alternative.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe eines Strings dynamisch Klasseninstanzen in PHP erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!