|
||||||
| Espace Clients |
|
|||||
|
- 95% des demandes d'aide de nos clients sont traités en moins de 2 heures ! - Nous sommes toujours en pleine innovation ! - Nous améliorons sans cesse la qualité de nos services ! |
Méthodes magiquesLes fonctions __construct, __destruct, __call, __callStatic, __get, __set, __isset, __unset, __sleep, __wakeup, __toString, __invoke, __set_state et __clone sont magiques en PHP. Vous ne pouvez pas utiliser ces noms de fonction dans vos classes, sauf si vous voulez implémenter le comportement associé à ces fonctions magiques. Attention
PHP réserve tous les noms de fonctions commençant par un double souligné __ pour les fonctions magiques. Il est recommandé de ne pas utiliser de noms de fonctions commençant par __ sauf si vous voulez des fonctionnalités magiques documentées. __sleep et __wakeupLa fonction serialize() vérifie si votre classe a une fonction avec le nom magique __sleep. Si c'est le cas, cette fonction sera exécutée avant toute linéarisation. Elle peut nettoyer l'objet et elle est supposée retourner un tableau avec les noms de toutes les variables de l'objet qui doivent être linéarisées. Si la méthode ne retourne rien, alors NULL est linéarisé et une alerte de type E_NOTICE est émise. Le but avoué de __sleep est de valider des données en attente ou d'effectuer les opérations de nettoyage. De plus, cette fonction est utile si vous avez de très gros objets qui n'ont pas besoin d'être sauvegardés en totalité. Réciproquement, la fonction unserialize() vérifie la présence d'une fonction dont le nom est le nom magique __wakeup. Si elle est présente, cette fonction peut reconstruire toute ressource que l'objet possède. Le but avoué de __wakeup est de rétablir toute connexion base de données qui aurait été perdue durant la linéarisation et d'effectuer des tâches de réinitialisation. Exemple #1 Utilisation de sleep() et wakeup()
<?php__toStringLa méthode __toString détermine comment la classe doit réagir lorsqu'elle est convertie en chaîne de caractères. Exemple #2 Exemple simple
<?phpL'exemple ci-dessus va afficher : Bonjour Il est important de noter qu'avant PHP 5.2.0, la méthode __toString n'était appelée que si elle était directement combinée avec echo() ou print(). Depuis PHP 5.2.0, il est appelé dans tous les contextes de chaîne de caractères (e.g. dans printf() avec le modificateur %s) mais pas dans les autres types de contextes (e.g. avec le modificateur %d). Depuis PHP 5.2.0, convertir un objet sans la méthode __toString en chaîne de caractères émettra une E_RECOVERABLE_ERROR. __invokeLa méthode __invoke est appelée lorsque le script tente d'appeler un objet comme une fonction.
Exemple #3 Exemple avec __invoke
<?phpL'exemple ci-dessus va afficher : int(5) bool(true) __set_stateCette méthode statique est appelée pour les classes exportées par la fonction var_export() depuis PHP 5.1.0. Le seul paramètre de cette méthode est un tableau contenant les propriétés exportées sous la forme array('propriété' => valeur, ...). Exemple #4 Utilisation de __set_state (depuis PHP 5.1.0)
<?phpL'exemple ci-dessus va afficher :
object(A)#2 (2) {
["var1"]=>
int(5)
["var2"]=>
string(3) "foo"
}
|


