„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich eine Klasse aus einer Variablen in PHP instanziieren?

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

Veröffentlicht am 18.11.2024
Durchsuche:152

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

Implementieren der Klasseninstanziierung aus einer Variablen in PHP

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 zu entkoppeln aus dem Entstehungsprozess. 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 im Folgenden Ressourcen:

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

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3