PHP5 Databases ORM (Relation Models / Objets) - Doctrine
Les méthodes « magiques » en PHP5
Launchy - un quicksilver like pour windows et linux

Les méthodes « magiques » en PHP5

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.

View Comments (3)
  1. 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.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.