Vous ne pouvez pas mettre deux fonctions __construct avec des signatures d'arguments uniques dans une classe PHP. J'aimerais faire ceci :
class Student
{
protected $id;
protected $name;
// etc.
public function __construct($id){
$this->id = $id;
// other members are still uninitialized
}
public function __construct($row_from_database){
$this->id = $row_from_database->id;
$this->name = $row_from_database->name;
// etc.
}
}
Quelle est la meilleure façon de faire cela en PHP ?
113 votes
Je rêve aussi de constructeurs nommés et de surcharge de méthodes +1
0 votes
Dans mon cas, je veux avoir un constructeur protégé qui a un argument requis de moins que le constructeur public - dans le but de standardiser sa méthode de fabrication. J'ai besoin d'une classe capable de créer des copies d'elle-même, et la fabrique est dans une classe abstraite, mais les classes concrètes peuvent avoir des constructeurs qui nécessitent un deuxième argument - dont la classe abstraite n'a aucune idée.
0 votes
Ce n'est pas vraiment quelque chose d'utile mais quelque chose que j'ai découvert par hasard il y a quelque temps : la classe DatePeriod dans date_c.php a plusieurs constructeurs. Mais je ne sais pas ce que PHP en fait en interne.