Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich eine Klasse aus einer Variablen in PHP instanziieren?

Wie kann ich eine Klasse aus einer Variablen in PHP instanziieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-17 16:17:01433Durchsuche

How Can I Instantiate a Class from a Variable in PHP?

Klasseninstanziierung aus einer Variablen in PHP implementieren

In PHP kann es vorkommen, dass Sie eine Klasse aus dem Wert einer Variablen instanziieren müssen. Lassen Sie uns dies anhand eines Beispiels veranschaulichen:

$var = 'bar';
$bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()');

Diese Methode versucht, eine Instanz der durch die Variable $var angegebenen Klasse zu erstellen. PHP unterstützt diese Syntax jedoch nicht nativ.

Alternativer Ansatz ohne eval()

Um dies ohne die Verwendung von eval() zu erreichen, können Sie eine Variable verwenden, um den Klassennamen zu speichern:

$classname = $var . 'Class'; // e.g. $classname = 'barClass'

$bar = new $classname('var for __construct()');

Factory-Muster

Diese Technik wird häufig im Factory-Muster verwendet, das dazu dient, die Klassenerstellung zu zentralisieren und vom Erstellungsprozess zu entkoppeln. In solchen Szenarien würde eine Factory-Klasse die gewünschten Klasseninstanzen dynamisch basierend auf der Konfiguration oder anderen Parametern erstellen.

Weitere Ressourcen

Weitere Informationen zu dynamischen Sprachfunktionen und Namespaces finden Sie in den folgenden Ressourcen:

  • [Namespaces](https://www.php.net/manual/en/sprache.namespaces.php)
  • [Dynamische Sprachfunktionen](https://www .php.net/manual/en/sprache.types.dynamic.php)

Das obige ist der detaillierte Inhalt vonWie kann ich eine Klasse aus einer Variablen in PHP instanziieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn