Dynamische Klasseninstanziierung mit Strings in PHP
In PHP ist es möglich, eine Instanz einer Klasse mithilfe eines Strings zu erstellen, der die Klasse darstellt Name. Dadurch entfällt die Notwendigkeit langwieriger Switch-Anweisungen beim Umgang mit mehreren Klassen.
Betrachten Sie das folgende Beispiel:
class ClassOne {} class ClassTwo {} $str = 'One';
Anstatt eine Switch-Anweisung zu verwenden:
switch ($str) { case "One": $object = new ClassOne(); break; case "Two": $object = new ClassTwo(); break; }
Sie können eine Instanz mithilfe einer Zeichenfolge wie folgt dynamisch erstellen:
$class = 'Class' . $str; $object = new $class();
Diese Syntax erstellt den vollständigen Klassennamen (z. B. „ClassOne“) und instanziiert es. Wenn sich Ihre Klassen in Namespaces befinden, verwenden Sie den vollständig qualifizierten Namen:
$class = '\Foo\Bar\MyClass'; $instance = new $class();
PHP erweitert diese Fähigkeit auch auf Variablenfunktionen und -methoden:
$func = 'my_function'; $func(...$parameters); // Calls my_function() with parameters $method = 'doStuff'; $object = new MyClass(); $object->$method(); // Calls Myclass->doStuff() (new MyClass())->$method(); // Calls Myclass->doStuff() in one line
Während Sie Variablen mit Zeichenfolgen erstellen können Dies gilt als schlechte Praxis und sollte zugunsten der Verwendung von Arrays vermieden werden.
Das obige ist der detaillierte Inhalt vonWie kann ich PHP-Klassen dynamisch mithilfe von Strings instanziieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!