Heim > Artikel > Backend-Entwicklung > Wie erreicht man eine dynamische Klasseninstanziierung in PHP, ohne eval() zu verwenden?
In PHP kann die Möglichkeit, eine Klasse aus einer Variablen zu instanziieren, in verschiedenen Szenarien nützlich sein. Man kann diese Funktionalität mit Ansätzen erreichen, die über die umstrittene eval()-Methode hinausgehen.
Problem:
Betrachten Sie den folgenden Code:
$var = 'bar'; $bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()');
Dies Ziel des Codes ist es, eine Klasse mithilfe einer Variablen als Klassennamen zu instanziieren. Allerdings ist die Syntax falsch.
Lösung:
Um eine dynamische Klasseninstanziierung ohne eval() zu erreichen, kann man zunächst den Klassennamen in einer Variablen speichern:
$classname = $var.'Class'; $bar = new $classname("xyz");
Bei diesem Ansatz wird der Klassenname einer Variablen ($classname) zugewiesen und dann wird die neue Instanz dieser Klasse unter Verwendung des $classname erstellt Variable.
Verwendung:
Diese Technik wird häufig im Factory-Muster verwendet, das die Erstellung von Objekten ohne Angabe des genauen Klassennamens ermöglicht. Es findet auch Anwendungen in Dependency-Injection-Frameworks, in denen Klassennamen zur Laufzeit dynamisch generiert oder konfiguriert werden können.
Weiteres Verständnis finden Sie in der Dokumentation zu Namespaces und dynamischen Sprachfunktionen in PHP.
Das obige ist der detaillierte Inhalt vonWie erreicht man eine dynamische Klasseninstanziierung in PHP, ohne eval() zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!