mardi 22 mai 2012

Les méthodes magiques

Une méthode magique est une méthode qui, si elle est présente dans votre classe, sera appelée lors de tel ou tel événement. Si la méthode n'existe pas et que l'événement est exécuté, aucun effet « spécial » ne sera ajouté, l'événement s'exécutera normalement. Le but des méthodes magiques est d'intercepter un événement, dire de faire ça ou ça et retourner une valeur utile pour l'événement si besoin il y a.

la méthode __construct est magique ! Comme dit plus haut, chaque méthode magique s'exécute au moment où tel événement est lancé. L'événement qui appelle la méthode __construct est la création de l'objet.

Dans le même genre que __construct on peut citer __destruct qui, elle, sera appelée lors de la destruction de l'objet. Assez intuitif, mais voici un exemple au cas où :

<?php
    class MaClasse
    {
        public function __construct()
        {
            echo 'Construction de MaClasse';
        }
       
        public function __destruct()
        {
            echo 'Destruction de MaClasse';
        }
    }
   
    $obj = new MaClasse;
?>

Surcharger les attributs et méthodes

La surcharge d'attributs ou méthodes consiste à prévoir le cas où l'on appelle un attribut ou méthode qui n'existe pas ou du moins, auquel on n'a pas accès (par exemple, si un attribut ou une méthode est privé(e)). Dans ce cas-là, on a… voyons… 6 méthodes magiques à notre disposition !

« __set » et « __get »
 <?php
    class MaClasse
    {
        private $unAttributPrive;
        
        public function __set ($nom, $valeur)
        {
            echo 'Ah, on a tenté d\'assigner à l\'attribut <strong>', $nom, '</strong> la valeur <strong>', $valeur, '</strong> mais c\'est pas possible !<br />';
        }
    }
   
    $obj = new MaClasse;
   
    $obj->attribut = 'Simple test';
    $obj->unAttributPrive = 'Autre simple test';
?>

 

Autres méthodes magiques

« __toString »,

« __set_state »

« __invoke »

« unserialize » et « __wakeup »

« serialize » et « __sleep »

« __call » et « __callStatic »

« __isset » et « __unset »

 

Aucun commentaire:

Enregistrer un commentaire