PHP – расширенный __конструкция

Я был удивлен, если бы вы могли мне помочь.

У меня есть два класса, один расширяет другой. Класс B будет расширяться различными объектами и использоваться для общих взаимодействий с базой данных. Теперь я хотел бы, чтобы класс B обрабатывал свои соединения и разъединения без направления из класса A или любого внешнего входа. ,

Проблема в том, что я понимаю, что расширенный класс не будет автоматически запускать свою функцию __construct. Есть ли способ обойти это?

Заранее спасибо..

class a extends b { public function __construct() { } public function validateStuff() { $this->insert_record(); } } class b { public function __construct() { $this->connect(); } protected function connect() { return true; } public function insert_record() { return true; } } 

    Родительский __construct() определенный в классе b, будет запускаться автоматически, если вы создаете экземпляр дочернего класса a, если только не существует __construct() определенный в классе a.

     class a extends b { } class b { public function __construct() { echo 'In B Constructor'; } } $x = new a(); 

    Если в классе a определен метод __construct() , это переопределяет использование метода __construct() в классе b …. он будет выполняться вместо метода класса b __construct()

     class a extends b { public function __construct() { echo 'In A Constructor'; } } class b { public function __construct() { echo 'In B Constructor'; } } $x = new a(); 

    Поэтому, если ваш дочерний класс имеет определенный __construct() , вам нужно явно вызвать конструктор для родителя, если вы хотите его выполнить.

     class a extends b { public function __construct() { parent::__construct(); echo 'In A Constructor'; } } class b { public function __construct() { echo 'In B Constructor'; } } $x = new a(); 

    Я не уверен, что полностью понимаю, что вы просите, но вы можете вызвать метод parent для родительского конструктора

     parent::__construct(); 

    Это единственный вариант, о котором я знаю.

    Вызов parent::__construct() в a::__construct() :

     class a extends b { public function __construct() { parent::__construct(); } public function validateStuff() { $this->insert_record(); } } 

    Вы можете вообще опустить конструктор, если не делаете никаких конкретных действий.