W PHP Constructors and Destructors documentation stwierdzaCzy konstruktory nadrzędne są wywoływane, jeśli klasa podrzędna NIE definiuje konstruktora?
Uwaga: konstruktorzy rodzic nie nazywa się niejawnie jeśli klasa dziecko określa konstruktor. Aby uruchomić konstruktora macierzystego, wymagane jest wywołanie funkcji parent :: __ construct() w konstruktorze podrzędnym.
Ale co jeśli klasa potomna nie wywoła konstruktora, czy nadal będzie wywoływany konstruktor macierzysty? A może powinniśmy utworzyć konstruktora, który mimo wszystko wywołuje konstruktor macierzysty?
IE:
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
}
}
Być może [podręcznik] (http://www.php.net/manual/en/language.oop5.decon.php) został zaktualizowany bardziej niedawno, ale stwierdza: "Jeśli dziecko nie definiuje konstruktor może być odziedziczony z klasy nadrzędnej, podobnie jak metoda z normalną klasą (jeśli nie została zadeklarowana jako prywatna). " – MrWhite
@ w3d Dziękujemy za aktualizację :). –
Czy można nawet zadeklarować konstruktor jako prywatny? Wydaje się, że w pierwszej kolejności pokonano cel posiadania klasy. – eggmatters