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.