PHP, comme de nombreux autres langages de programmation orientés objet, prend en charge les constructeurs et les destructeurs de classe.
Un constructeur est un fonction spécifique qui est automatiquement invoqué lorsqu'un objet de classe est formé. La fonction principale d'un constructeur est d'initialiser les propriétés de l'objet et de les définir sur des valeurs par défaut ou des valeurs fournies en tant qu'arguments lors de la formation de l'objet. Les constructeurs sont déclarés en PHP avec la syntaxe du double trait de soulignement (__) et la phrase « construct ». « __construct » doit être le nom de la méthode constructeur. Voici un exemple de constructeur en action dans la classe "Pet":
class Pet {
public $nick_name;
public $color;
function __construct($name, $color) {
$this->nick_name = $name;
$this->color = $color;
}
function get_name() {
return $this->nick_name;
}
function get_color() {
return $this->color;
}
}
$cat = new Pet("Whiskers", "Black");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();
Lorsque nous créons un nouvel objet "Pet" et mettons "Whiskers" et "Black" comme paramètres, le constructeur définit les propriétés "nick name" et "color" de l'objet sur "Whiskers" et "Black", respectivement. Les valeurs de ces attributs peuvent ensuite être récupérées à l'aide des méthodes « get name » et « get color ».
Un destructeur, d'autre part, est une procédure particulière qui est invoquée chaque fois qu'un objet est détruit ou supprimé de la mémoire. Sa fonction principale est de libérer les ressources que l'objet utilisait, telles que l'arrêt des connexions à la base de données ou l'effacement de la mémoire. Les destructeurs sont déclarés en PHP avec la syntaxe du double trait de soulignement (__) et le mot « détruire ». « __destruct » doit être le nom de la méthode destructrice. Voici un exemple de destructeur de classe en action :
class Pet {
public $nick_name;
public $color;
function __construct($name, $color) {
$this->nick_name = $name;
$this->color = $color;
}
function get_name() {
return $this->nick_name;
}
function get_color() {
return $this->color;
}
function __destruct() {
echo "Goodbye, " . $this->nick_name . "!<br>";
}
}
$cat = new Pet("Whiskers", "Black");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();
Dans cet exemple, lorsque le script se termine ou que l'objet « Pet » est détruit, le destructeur est immédiatement appelé et affiche « Goodbye, Whiskers ! sur l'écran.
Il est essentiel de comprendre qu'en PHP, les constructeurs et les destructeurs ne sont pas exécutés manuellement ; elles sont appelées automatiquement lorsqu'un objet est créé ou détruit. Vous pouvez également spécifier des valeurs par défaut pour les arguments du constructeur. Par exemple, si vous souhaitez que le deuxième paramètre du constructeur soit facultatif, vous pouvez définir une valeur par défaut comme celle-ci :
function __construct($name,$color = "Black") {
$this->nick_name = $name;
$this->color = $color;
}
Dans cet exemple, si non Plus-value car le deuxième paramètre est fourni lors de la création de l'objet, la propriété "couleur" sera automatiquement définie sur "Noir".
Il est également important de noter que si une classe enfant étend une classe parent et veut Appelez-nous le constructeur de la classe parent dans son propre constructeur, il peut utiliser la syntaxe « parent :: __construct () » pour ce faire. Si la classe enfant n'a pas son propre constructeur, le constructeur de la classe parent sera hérité comme une fonction normale, sauf s'il est déclaré comme privé.
En résumé, constructeurs et destructeurs sont des méthodes spéciales utilisées pour initialiser et libérer des ressources pour les objets en PHP. Ils sont automatiquement appelés lorsqu'un objet est créé ou détruit et peuvent être utilisés pour définir des valeurs par défaut pour les propriétés d'un objet ou pour effectuer d'autres tâches.
Questions et réponses
Q : Qu'est-ce qu'un constructeur en PHP ?
R : Un constructeur est une fonction spécifique qui est automatiquement invoquée lorsqu'un objet de classe est formé. Sa fonction principale est d'initialiser les propriétés de l'objet, en les définissant sur des valeurs par défaut ou des valeurs fournies en tant qu'arguments lors de la création de l'objet. Les constructeurs sont spécifiés à l'aide de la syntaxe du double trait de soulignement (__) avec le mot "construct", et le nom de la méthode constructeur doit être "__construct".
Q : Comment un constructeur est-il déclaré en PHP ?
R : Les constructeurs sont déclarés en PHP avec la syntaxe du double trait de soulignement (__) et la phrase « construct ». « __construct » doit être le nom de la méthode constructeur.
Q : À quoi sert un destructeur en PHP ?
R : Lorsqu'un objet est détruit ou supprimé de la mémoire, une méthode de destruction est automatiquement invoquée. Sa fonction principale est de libérer les ressources que l'objet utilisait, telles que l'arrêt des connexions à la base de données ou l'effacement de la mémoire.
Q : Comment un destructeur est-il déclaré en PHP ?
R : En PHP, les destructeurs sont déclarés en utilisant la syntaxe du double trait de soulignement (__) avec le mot « destruct ». Le nom de la méthode de destruction doit être « __destruct ».
Q : Avons-nous besoin d'appeler manuellement les constructeurs et les destructeurs en PHP ?
R : Non, les constructeurs et les destructeurs sont automatiquement appelés lorsqu'un objet est créé ou détruit et nous n'avons pas besoin de les appeler manuellement.
Q : Pouvons-nous définir des valeurs par défaut pour les paramètres du constructeur en PHP ?
R : Oui, nous pouvons utiliser PHP pour établir des valeurs par défaut pour les arguments du constructeur. Par exemple, si vous souhaitez que le deuxième paramètre du constructeur soit facultatif, vous pouvez définir une valeur par défaut comme celle-ci :
function __construct($name, $color = "Black") {
$this->nick_name = $name;
$this->color = $color;
}
Q : Comment une classe enfant peut-elle appeler le constructeur de la classe parent en PHP ?
R : Si une classe enfant étend une classe parent et souhaite appeler le constructeur de la classe parent dans son propre constructeur, elle peut utiliser la syntaxe "parent :: __construct ()" pour le faire.
Des exercices:
- Créez une classe appelée "Car" avec des propriétés pour "make", "model" et "year" et un constructeur qui définit ces valeurs lorsqu'un nouvel objet est créé.
- Ajoutez une méthode à la classe "Car" appelée "getDetails" qui renvoie la marque, le modèle et l'année de la voiture sous forme de chaîne.
- Créez une classe enfant appelée "ElectricCar" qui étend la classe "Car" et a une propriété supplémentaire pour "batteryLife" et un constructeur qui définit cette valeur.
- Ajoutez une méthode à la classe "ElectricCar" appelée "getBatteryLife" qui renvoie la valeur de la propriété "batteryLife".
- Créez un objet de la classe "ElectricCar" et utilisez les méthodes que vous avez créées pour afficher les détails et la durée de vie de la batterie de la voiture.
Réponses:
1.
class Car {
public $make;
public $model;
public $year;
function __construct($make, $model, $year) {
$this->make = $make;
$this->model = $model;
$this->year = $year;
}
}
2.
class Car {
public $make;
public $model;
public $year;
function __construct($make, $model, $year) {
$this->make = $make;
$this->model = $model;
$this->year = $year;
}
function getDetails() {
return $this->make . " " . $this->model . " " . $this->year;
}
}
3.
class ElectricCar extends Car {
public $batteryLife;
function __construct($make, $model, $year, $batteryLife) {
parent::__construct($make, $model, $year);
$this->batteryLife = $batteryLife;
}
}
4.
class ElectricCar extends Car {
public $batteryLife;
function __construct($make, $model, $year, $batteryLife) {
parent::__construct($make, $model, $year);
$this->batteryLife = $batteryLife;
}
function getBatteryLife() {
return $this->batteryLife;
}
}
5.
$electricCar = new ElectricCar("Tesla", "Model S", 2022, 300);
echo $electricCar->getDetails();
echo "<br>";
echo "Battery Life: " . $electricCar->getBatteryLife();