Dynamisches Erstellen von PHP-Objekten aus Strings
Einführung:
In PHP ist es möglich um Objekte einer bestimmten Klasse dynamisch basierend auf einer Zeichenfolgendarstellung des gewünschten Klassennamens zu erstellen. Diese Technik kann besonders in Szenarien nützlich sein, in denen der Klassentyp nicht im Voraus bekannt ist oder zur Laufzeit nicht programmgesteuert bestimmt wird.
Problemstellung:
Stellen Sie sich eine MySQL-Datenbank vor, bei der a Die Tabelle speichert Informationen über Objekte, einschließlich deren Typ und Eigenschaften. Die Aufgabe besteht darin, mit einer einzigen Abfrage PHP-Objekte der angegebenen Typen zu erstellen und die entsprechenden Eigenschaftswerte aus derselben Zeile in der Datenbank zuzuweisen.
Lösung:
An Um PHP-Objekte basierend auf Zeichenfolgen in einer Datenbank dynamisch zu erstellen, können Sie die folgenden Schritte ausführen:
Erstellen Sie das Objekt:Verwenden Sie das folgende PHP Syntax zum Erstellen einer Instanz der angegebenen Klasse:
$instance = new $type;
Eigenschaftswerte zuweisen: Iterieren Sie über die verbleibenden Spalten in der Datenbankzeile und weisen Sie deren Werte zu entsprechende Eigenschaften des neu erstellten Objekts. Zum Beispiel:
foreach ($row as $key => $value) { if ($key != 'type') { $instance->$key = $value; } }
Beispiel:
Betrachten Sie die im Problem erwähnte Datenbanktabelle:
id | type | propertyVal |
---|---|---|
1 | foo | lorum |
2 | bar | ipsum |
Mit der oben beschriebenen Lösung könnte der folgende PHP-Code zum Erstellen von Objekten verwendet werden:
$row = fetchRowFromDatabase(); $type = $row['type']; $instance = new $type; foreach ($row as $key => $value) { if ($key != 'type') { $instance->$key = $value; } }
Dieser Code würde eine Instanz der Klasse „foo“ oder „bar“ basierend auf dem Wert im „type“ erstellen ' Spalte und weisen Sie den Wert „propertyVal“ der entsprechenden Eigenschaft des Objekts zu.
Das obige ist der detaillierte Inhalt vonWie erstelle ich dynamisch PHP-Objekte aus Zeichenfolgen in einer Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!