Manuel PHP

Constructeurs et destructeurs

Constructeurs

void __construct ([ mixed $args [, $... ]] )

PHP 5 permet aux développeurs de déclarer des constructeurs pour les classes. Les classes qui possèdent une méthode constructeur appellent cette méthode à chaque création d'une nouvelle instance de l'objet, ce qui est intéressant pour toutes les initialisations dont l'objet a besoin avant d'être utilisé.

Note: Les constructeurs parents ne sont pas appelés implicitement si la classe enfant définie un constructeur. Si vous voulez utiliser un constructeur parent, il sera nécessaire de faire appel à parent::__construct().

Example#1 Exemple d'utilisation des nouveaux constructeurs unifiés

  1. <?php
  2. class BaseClass { 
  3.    function __construct() { 
  4.       print "In BaseClass constructor\n"; 
  5.    }  
  6. }  
  7.  
  8. class SubClass extends BaseClass { 
  9.    function __construct() { 
  10.       parent::__construct(); 
  11.       print "In SubClass constructor\n"; 
  12.    }  
  13. }  
  14.  
  15. $obj = new BaseClass();  
  16. $obj = new SubClass();  
  17. ?> 

Pour des raisons de compatibilité ascendante, si PHP 5 ne peut pas trouver une fonction __construct() pour une classe donnée, il cherchera une fonction constructeur représentée, comme dans l'ancien style (PHP < 5), par le nom de la classe. Effectivement, cela signifie que le seul cas où il pourrait y avoir un problème de compatibilité est celui où votre classe contiendrait une méthode nommée __construct() et que vous en ayez un autre usage.

Destructeurs

void __destruct ( void )

PHP 5 introduit un concept de destructeur similaire aux autres langages orientés objet, comme le C++. La méthode destructeur doit être appelée aussitôt que toutes les références à un objet particulier sont effacées ou lorsque l'objet est explicitement détruit.

Example#2 Exemple avec un Destructeur

  1. <?php
  2. class MyDestructableClass { 
  3.    function __construct() { 
  4.       print "In constructor\n"; 
  5.       $this->name = "MyDestructableClass"; 
  6.    } 
  7.  
  8.    function __destruct() { 
  9.       print "Destruction de " . $this->name . "\n"; 
  10.    }  
  11. }  
  12.  
  13. $obj = new MyDestructableClass();  
  14. ?> 

Tout comme le constructeur, le destructeur parent n'est pas appelé implicitement par le moteur. Pour exécuter le destructeur parent, vous devez appeler explicitement la fonction parent::__destruct dans le corps du destructeur.

Note: Le destructeur est appelé durant l'arrêt du script, donc les en-têtes sont toujours déjà envoyés.

Note: Tenter de lancer une exception depuis un destructeur résulte en une erreur fatale.


Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Breizh Blog