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 :
<?php class MyClass { public $Name; public function __set($var, $val) { echo ("La propriétée : ".$var." - Valeur : ".$val); } } $systemvars = new MyClass(); $systemvars->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 :
<?php class MyClass { private $adminEmail; public function setAdminEmail ($var) { $this->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.






Espace de communautaire - postez vos commentaires