Je me demandais si tu pouvais m'aider ..
J'ai deux classes, on étend l'autre. La classe B sera étendue par divers objets différents et utilisé pour les interactions de base de données communes .. Maintenant, je voudrais que la classe B de la classe B de gérer sa connexion et une déconnexion sans la direction de la classe A ou de toute entrée externe. .
Le problème de ce que je comprends est qu'une classe étendue fonctionnera automatiquement sa fonction __Construction. Y a-t-il un moyen de contourner cela?
Merci d'avance..
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;
}
}
La méthode Parent __construct()
définie dans la classe B s'exécutera automatiquement si vous instanciez la classe d'enfant A, sauf Il existe une méthode __construct()
définie dans la classe A.
class a extends b {
}
class b {
public function __construct()
{
echo 'In B Constructor';
}
}
$x = new a();
Si une méthode de __construct()
est définie dans la classe A, cela remplace l'utilisation de la méthode __construct()
en classe B .... Il fonctionnera au lieu de la classe 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();
Donc, si votre classe enfant a une méthode __construct()
définie, vous devez appeler explicitement le constructeur pour le parent si vous souhaitez l'exécuter aussi.
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();
Call parent::__construct()
Dans a::__construct()
:
class a extends b
{
public function __construct()
{
parent::__construct();
}
public function validateStuff()
{
$this->insert_record();
}
}
Vous pouvez tout d'omettre le constructeur de A si vous ne faites aucune matière spécifique.