muertos mati incendios incendio hoy grecia fuego atenas aeropuerto abrazados php class constructor extends

php - incendios - mati grecia



PHP-ampliado__construct (3)

Me preguntaba si podrías ayudarme ...

Tengo dos clases, una se extiende la otra ... La clase B se extenderá por varios objetos diferentes y se utilizará para las interacciones comunes de la base de datos. Ahora me gustaría que la clase B maneje sus conexiones y desconexiones sin dirección de la clase A o cualquier entrada externa. .

El problema por lo que entiendo es que una clase extendida no ejecutará automáticamente su función __construct .. ¿Hay alguna forma de evitar esto?

Gracias por adelantado..

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; } }


El __construct() principal __construct() definido en la clase b se ejecutará automáticamente si __construct() una instancia de la clase secundaria a, a menos que haya un método __construct() definido en la clase a.

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

Si un método __construct() está definido en la clase a, entonces esto invalida el uso del método __construct() en la clase b ... se ejecutará en lugar del método __construct() de la clase 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();

Entonces, si su clase hija tiene un método __construct() definido, entonces necesita llamar explícitamente al constructor para el padre si desea ejecutar eso también.

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();


Llame a parent::__construct() en a::__construct() :

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

Puedes omitir el constructor de a si no estás haciendo ninguna tarea específica.


No estoy seguro de entender lo que está preguntando, pero puede llamar al método de construcción de los padres desde el constructor del niño

parent::__construct();

Esa es la única opción que conozco.