Maison >développement back-end >tutoriel php >Comment obtenir la fonctionnalité de surcharge de constructeur en PHP ?
Surcharge de constructeurs en PHP : une solution optimale
En PHP, déclarer plusieurs constructeurs avec différentes signatures d'arguments dans une seule classe n'est pas réalisable. Cependant, il existe une solution pragmatique pour relever ce défi.
Considérez le scénario suivant :
class Student { protected $id; protected $name; // etc. public function __construct($id) { $this->id = $id; // other members remain uninitialized } public function __construct($row_from_database) { $this->id = $row_from_database->id; $this->name = $row_from_database->name; // etc. } }
Pour résoudre ce problème, l'approche suivante est recommandée :
<?php class Student { public function __construct() { // allocate necessary resources } public static function withID($id) { $instance = new self(); $instance->loadByID($id); return $instance; } public static function withRow(array $row) { $instance = new self(); $instance->fill($row); return $instance; } protected function loadByID($id) { // fetch data from database $row = my_awesome_db_access_stuff($id); $this->fill($row); } protected function fill(array $row) { // populate properties from array } } ?>
Dans cette solution, au lieu de créer plusieurs constructeurs, des méthodes d'assistance statiques sont utilisées. En invoquant ces méthodes, de nouvelles instances Student peuvent être créées et initialisées avec des valeurs spécifiques :
// Create a student with a known ID $student = Student::withID($id); // Create a student using a database row array $student = Student::withRow($row);
Cette approche évite la complexité potentielle du codage et les problèmes de maintenance associés à la présence de plusieurs constructeurs dans une seule classe PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!