Constructeurs multiples en PHP
PHP n'autorise pas plusieurs constructeurs avec des signatures d'arguments différentes dans une classe. Cela pose un défi lorsque différents scénarios nécessitent des processus d'initialisation distincts.
Une approche consiste à définir deux méthodes de constructeur :
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']; } }
Cependant, cette approche viole les règles de syntaxe des constructeurs PHP.
Pour contourner cette limitation, une solution courante consiste à créer des méthodes de fabrique statiques à la place :
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; } }
Avec cette technique, l'initialisation est effectuée via des méthodes statiques au lieu du constructeur :
$studentWithID = Student::withID(42); $studentWithRow = Student::withRow(['id' => 42, 'name' => 'John']);
Les méthodes de fabrique statiques fournissent un moyen flexible et maintenable de traiter plusieurs scénarios d'initialisation tout en respectant Principes de conception de classes PHP.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3