Sont abstraits, les constructeurs de classe pas implicitement appelée lorsqu'une classe dérivée est instancié?
Prenez cet exemple:
abstract class Base {
function __construct() {
echo 'Base __construct<br/>';
}
}
class Child extends Base {
function __construct() {
echo 'Child __construct<br/>';
}
}
$c = new Child();
À venir à partir d'un C# arrière-plan, j'attends la sortie de la
De la Base de __construct
Enfant __construct
Cependant, la production réelle est juste
Enfant __construct
Vous devez vous connecter pour publier un commentaire.
Non, le constructeur de la classe parent n'est pas appelée si l'enfant de la classe définit un constructeur.
À partir du constructeur de votre enfant de la classe, vous devez appeler le constructeur de la classe du parent :
En lui passant les paramètres, si nécessaire.
Généralement, vous allez le faire au début de l'constructeur de la classe fille, avant tout code spécifique ; ce qui signifie, dans votre cas, vous auriez :
Et, pour référence, vous pouvez prendre un coup d'oeil à cette page du manuel PHP : Les constructeurs et Destructeurs -- c'états (en les citant) :
Bien, j'ai juste trouvé ça dans le docs:
Si vous avez besoin de le même comportement que C#, qui est le constructeur parent obtient toujours exécuté avant de enfant de constructeur, vous pouvez créer un faux constructeur de la classe de votre enfant des classes et de la déclarer comme une fonction abstraite dans votre résumé de classe parent.
E. g.
{...}
)