Featured PHP

Les méthodes « magiques » en PHP5

img6

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 :

Ceci résulte dans la sortie suivante :

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 :

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.

About the author

Eric Wallet

3 Comments

Click here to post a comment

Votre adresse de messagerie ne sera pas publiée.

 

  • C’est vrai que développer en objet (lorsqu’on débute) est bien plus long que de se la jouer à la old school, mais le travail est pérenne et si comme tu le dis on respecte un certain nombre de bonnes pratiques, on obtient un code réutilisable, là où à l’époque on devait sans cesse redéfinir les mêmes fonctions ou se faire des fichiers regroupant nos fonctions sans une vraie bonne organisation autour d’un objet.