Le rappel des méthodes magiques
Par Meldwin le jeudi, août 14 2008, 22:39 - WebDev - Lien permanent
Bonjour,
Le sujet d'aujourd'hui : Les méthodes magiques, traduction par Meldwin de "Exploring Magic Method in PHP 5" composé par Hitesh Agrawal.
Avec PHP 5, la programmation orientée objet semble devenir une réalité mais nous savons tous qu'en PHP une variable peut prendre n'importe quelle forme, cela dépend de la donnée qu'on lui donne. Aussi, PHP crée automatiquement des variables et leur assigne des valeurs même si les variables n'ont pas été définies. Mais en POO, toutes les données membres/méthodes doiventêtre définies. Pour résoudre certains de ces problèmes dans un environnement OO, des méthodes magiques ont été introduites en PHP5.
Note sur les méthodes magiques :
- Les méthodes magiques sont les fonctions membres qui sont utilisables par toutes les instances de la classe;
- Les méthodes magiques commencent toujours par `__'.
- Toutes les méthodes magiques doivent être déclarées comme publique;
- Pour utiliser les méthodes magiques, elles doivent être définies à l'intérieur de la classe ou dans la portée de la classe.
Les différentes méthodes magiques utilisées en PHP5 sont :
- construct() : Cette méthode est appelée à chaque fois qu'un objet d'une classe est instancié. Cette méthode fait partie du concept de POO en PHP5.
- destruct() : Cette méthode est appelée à chaque fois qu'un objet d'une instance est détruit ou que l'objet sort de la portée de la classe. Cette méthode fait partie du concept de POO en PHP5.
- set() : Cette méthode est appelée automatiquement lorsque vous assignez des données à un attribut non défini d'une classe en PHP5.
- get() : Cette méthode est appelée automatiquement lorsque vous essayez d'accéder à la donnée d'un attribut non défini d'une classe en PHP5.
- call() : Cette méthode est automatiquement appelée quand vous faîtes appel à une méthode non définie d'une classe en PHP5.
- toString() : Cette méthode est automatiquement appelée quand un objet d'une classe est traité comme une chaine et que vous faites appel à echo ou print(). Cette méthode est vraiment utile si vous voulez contrôler les méthodes d'un objet et ses attributs.
- sleep() : Cette méthode est appelée quand vous linéarisez un objet en PHP5. Avec cette méthode vous pouvez définir la façon dont les données de l'objet seront stockées.
- wakeup() : Cette méthode est appelée quand l'objet est sur le point d'être délinéarisé en PHP5. Avec l'appel de cette méthode, vous pouvez effectuer des opérations initiales nécessaires avant de commencer l'opération sur la donnée objet reçue.
- isset() : Cette méthode est automatiquement appelée lorsque vous essayer de vérifier l'existence d'un attribut non déclaré d'une classe en utilisant la fonction isSet() de PHP.
- unset() :Cette méthode est automatiquement appelée à chaque fois que vous essayez de contrôler la destruction ou l'effacement d'un attribut non déclaré de la classe en utilisant la fonction unset() de PHP.
- autoload() : Cette méthode est appelée à chaque fois que vous essayez de charger un objet d'une classe qui est située dans un fichier séparé et que vous n'avez pas inclue ce fichier en utilisant include, include_once, require, require_once. Pour utiliser cette méthode, il est obligatoire que le fichier PHP ait le même nom que la classe car cette méthode accepte le nom de la classe comme argument.
- clone() : PHP5 a introduit la méthode clone qui crée un copie de l'objet. La méthode __clone est automatiquement appelée quand vous essayez d'appeler la méthode clone en PHP5. Cet opérateur ne crée pas une copie de la référence.
Je vous invite dès lors à partager vos réactions, et vos suggestions. Eg. Des tutoriels sur l'utilisation de chacune de ces méthodes ?
Cordialement,
un commentaire
Bonjour,
Dans le manuel php y a des exemples pour les méthodes magiques. Y aussi
__invokeet__callStatic.http://fr.php.net/manual/fr/languag...
PS : c'est marrant le bbcode, c'est spécifique à DotClear ?
Bye
La discussion continue ailleurs
URL de rétrolien : http://plumeconception.olympe-network.com/blog/index.php?trackback/7
Fil des commentaires de ce billet