Каков наилучший способ гарантировать, что родительский класс всегда создается, поскольку мы можем легко переопределить конструкторы, не вызывая их вообще.
Кроме того: это плохая практика?
Вы можете явно вызвать конструктор родителя, вызвав:
parent::__construct(<params>);
Также, насколько я знаю, конструкторы должны быть public.
public