Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich PHP-Klassen dynamisch mithilfe von Strings instanziieren?

Wie kann ich PHP-Klassen dynamisch mithilfe von Strings instanziieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-04 04:23:09178Durchsuche

How Can I Instantiate PHP Classes Dynamically Using Strings?

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!

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