Mehrere Konstruktoren in PHP
PHP erlaubt nicht mehrere Konstruktoren mit unterschiedlichen Argumentsignaturen in einer Klasse. Dies stellt eine Herausforderung dar, wenn verschiedene Szenarien unterschiedliche Initialisierungsprozesse erfordern.
Ein Ansatz besteht darin, zwei Konstruktormethoden zu definieren:
class Student { public function __construct($id) { $this->id = $id; } public function __construct(array $row_from_database) { $this->id = $row_from_database['id']; $this->name = $row_from_database['name']; } }
Dieser Ansatz verstößt jedoch gegen die Konstruktorsyntaxregeln von PHP.
Um diese Einschränkung zu umgehen, besteht eine gängige Lösung darin, stattdessen statische Factory-Methoden zu erstellen:
class Student { public function __construct() { // Allocate resources here } public static function withID($id) { $student = new self(); $student->id = $id; return $student; } public static function withRow(array $row) { $student = new self(); $student->id = $row['id']; $student->name = $row['name']; return $student; } }
Mit dieser Technik Die Initialisierung erfolgt über statische Methoden anstelle des Konstruktors:
$studentWithID = Student::withID(42); $studentWithRow = Student::withRow(['id' => 42, 'name' => 'John']);
Statische Factory-Methoden bieten eine flexible und wartbare Möglichkeit, mehrere Initialisierungsszenarien zu bewältigen und dabei die Klassendesignprinzipien von PHP einzuhalten.
Das obige ist der detaillierte Inhalt vonWie können Sie mehrere Initialisierungsszenarien in PHP-Klassen ohne mehrere Konstruktoren bewältigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!