Top

Les méthodes « magiques » en PHP5

(2 votes, 2.5 / 5)
Loading ... Loading ...

Posté le par admin

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




Bottom