PHP 5, un constructeur et un destructeur uniformisés

Avec PHP 5, les choses deviennent plus simples et plus logiques: toute méthode réservée par PHP 5 est préfixée par __ (double soulignement ou underscore). C’est le cas notamment du constructeur déclaré par la méthode __construct et du destructeur déclaré par __destruct. Il faut noter malheureusement, qu’il n’est toujours pas possible de déclarer plusieurs constructeurs avec des paramètres différents alors qu’il est maintenant possible de typer les paramètres de méthode.

Voici un exemple d’utilisation de constructeur et de destructeur:

// La ligne ci-dessous permet d'afficher tout texte comme texte simple et non comme
// du HTML. C'est utile si nous utiliserons la fonction print_r/print('n')
// (voir la documentation PHP pour plus d'info)
 
header("Content-type: text/plain");
 
class Utilisateur {
   private $nom = null;
   private $prenom = null;
   private $dateNaissance = null;
 
   function Utilisateur($nom, $prenom, $dateNaissance=null) {
       print("Utilisateur($nom, $prenom, $dateNaissance=null) appelé");
   }
 
   function __construct($nom, $prenom, $dateNaissance=null) {
       print("__construct($nom, $prenom, $dateNaissance=null) appelé");
       $this->nom = $nom;
       $this->prenom = $prenom;
       $this->dateNaissance = $dateNaissance;
   }
 
   function __destruct() {
       print("__destruct() appelé");
       unset($this->nom);
       unset($this->prenom);
       unset($this->dateNaissance);
   }
}
 
$utilisateur = new Utilisateur("MARTIN", "Pierre");
unset($utilisateur);

Vous remarquerez à l’exécution que l’ancien constructeur PHP 4 n’est plus utilisé. C’est totalement normal dès que vous utilisez un constructeur de type PHP 5. Ceci permet une compatibilité ascendante de PHP et ainsi de pouvoir continuer d’utiliser des classes développées pour PHP 4 avec la dernière version du langage.

L’appel du destructeur est fait implicitement par le moteur de PHP à la fin du script. Mais si vous souhaitez faire de la programmation propre, vous devez l’appeler explicitement avec le mot clé unset qui existe déjà avec PHP 4. C’est ce que nous faisons avec le unset($utilisateur) à la fin du code. Nous le faisons aussi dans le destructeur de la classe Utilisateur.

Si nous avions utilisé des objets pour stocker les attributs de cette classe (des objets String par exemple), leurs destructeurs respectifs auraient, eux aussi, été appelés produisant un effet « domino » sur l’ensemble des objets utilisés.

Pour les connaisseurs, l’équivalent du mot clé unset en langage C++ est delete (un temps envisagé semble-t-il avec PHP 5).

Source : http://www.toutprogrammer.com

Share

One Comment

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *