Le constructeur d'une classe définit ce qui se passe lorsque vous instancier un objet de cette classe. Le destructeur d'une classe définit ce qui se passe lorsque vous détruisez l'instance d'objet.
Voir la PHP Manual on Constructors and Destructors:
PHP 5 permet aux développeurs de déclarer des constructeurs pour les classes. Les classes qui ont une méthode constructeur appellent cette méthode sur chaque objet nouvellement créé, elle convient donc à toute initialisation dont l'objet peut avoir besoin avant d'être utilisé.
et
PHP 5 introduit un concept destructor similaire à celle d'autres langages orientés objet, tels que C++. La méthode destructeur sera appelée dès que toutes les références à un objet particulier sont supprimées ou lorsque l'objet est explicitement détruit ou dans un ordre quelconque dans la séquence d'arrêt.
En pratique, vous utilisez le constructeur pour placer l'objet dans un état valide minimum. Cela signifie que vous affectez les arguments passés au constructeur aux propriétés de l'objet. Si votre objet utilise une sorte de types de données qui ne peuvent pas être affectés directement en tant que propriété, vous les créez ici, par ex.
class Example
{
private $database;
private $storage;
public function __construct($database)
{
$this->database = $database;
$this->storage = new SplObjectStorage;
}
}
Notez que pour garder vos objets testable, a constructor should not do any real work:
travail dans le constructeur, tels que: création/initialisation collaborateurs, communiquer avec d'autres services, et la logique de mettre en place son propre état supprime les coutures nécessaires au test, forçant les sous-classes/fausses à hériter d'un comportement indésirable. Trop de travail dans le constructeur empêche l'instanciation ou la modification des collaborateurs dans le test.
Dans Example
ci-dessus, le $database
est un collaborateur. Il a un cycle de vie et le but de son propre et peut être une instance partagée. Vous ne créeriez pas cela à l'intérieur du constructeur. D'autre part, le SplObjectStorage
fait partie intégrante de Example
. Il a le même cycle de vie et n'est pas partagé avec d'autres objets. Ainsi, il est correct de new
dans le ctor.
De même, vous utilisez le destructeur pour nettoyer après votre objet. Dans la plupart des cas, cela n'est pas nécessaire car il est géré automatiquement par PHP. C'est pourquoi vous verrez beaucoup plus de ctors que de dtors dans la nature.
par exemple sont vraiment bien, maintenant je comprends un peu pourquoi les gens cherchent constructor et desructor, mais dites-moi, si je ne suis pas utilisé le constructeur, je perds tout ... bcoz dans le programme nous utilisons beaucoup de fonctions, varaibles et donc .. pour les fonctions et variabl, comment puis-je utiliser construc, y at-il une affectation dynamique là, signifie que nous devrions appeler tous les nom de fonction à l'intérieur du constructeur, – Bharanikumar
quelle est la raison possible de ne pas accepter ... réponse .... –