PHP5 apporte à PHP les fondements de la programmation objet. PHP5 apporte un certain nombre de méthodes utilisables dans les Objets afin d’automatiser certaines taches, ou intercepter des appels à des méthodes / propriétés inexistantes… D’un point de vue architecture c’est une mauvaise pratique que de se baser sur ces méthodes, ca reste dans certains cas d’exceptions, très pratique

Liste des méthodes « magiques » en PHP5 :

  • __construct()
  • __destruct()
  • __set()
  • __get()
  • __call()
  • __toString()
  • __sleep()
  • __wakeup()
  • __isset()
  • __unset()
  • __autoload()
  • __clone()

__construct()
Cette méthode est appelée lors de la construction d’un objet.

__destruct()
Cette méthode est appelée lors de la destruction d’un objet.

__set()
Cette méthode est appelée automatiquement lors de l’assignation d’une valeur à un attribut inexistant.

__get()
Cette méthode est appelée automatiquement lors de la lecture d’une valeur à un attribut inexistant.

__call()
Cette méthode est appelée automatiquement lors de l’appel à une méthode inexistante.

__toString()
Cette méthode est appelée lors de la tentative d’interprétation d’un objet en String. (via un echo ou print…)

__sleep()
Cette méthode sert à la sérialisation d’un objet en PHP5. Elle doit définir la façon dont PHP doit le sérialiser.

__wakeup()
Cette méthode doit définir la dé-sérialisation d’un objet en PHP5.

__isset()
Cette méthode est utilisée lors de la vérification de l’existence d’un attribut via un appel à la méthode « isset »..

__unset()
Méthode appelée lors de la destruction de l’objet.

__autoload()
Cette méthode est appelée lorsque vous essayez de charger un objet dans un fichier séparé sans l’avoir précédemment chargé via un include, include_once, require ou require_once.

__clone()
cette méthode définie la façon de cloner un objet.

Exemple :

 adminEmail = 'toto@toto.fr';
?>

Ceci résulte dans la sortie suivante :

        La propriétée : adminEmail - Valeur : toto@toto.fr

Ce n’est pas une bonne pratique !

En effet, à part dans des cas isolés, il est fortement recommendé de definir clairement vos bean, avec des propriétées, des setters et des getters.

La bonne pratique voudrait :

 adminEmail = $var;
        }

        public function getAdminEmail() {
             return $this->adminEmail;
        }

    }

    $systemvars = new MyClass();
    $systemvars->setAdminEmail ('toto@toto.fr');
?>

Il est important pour la pérennité du code de respecter les bonnes pratiques, mais parfois, il faut être flexible, voila l’idée de cet article.