Maison  >  Article  >  développement back-end  >  Quelles sont les méthodes magiques en php

Quelles sont les méthodes magiques en php

王林
王林original
2020-08-20 13:50:172388parcourir

Les méthodes magiques en PHP sont : 1. __sleep, qui renvoie un tableau contenant les noms de toutes les variables de l'objet qui doivent être sérialisées ; 2. __tostring, qui renvoie une classe qui doit être affichée lorsqu'elle l'est ; traité comme une chaîne de caractères ; 3. __construct, méthode de construction ; 4. __destruct, méthode de destruction.

Quelles sont les méthodes magiques en php

Conservez toutes les méthodes de classe commençant par un double trait de soulignement (__) comme méthodes magiques en PHP.

(Tutoriel recommandé : Tutoriel graphique php )

Jetons un coup d'œil aux méthodes magiques :

1 __sleep : renvoie un tableau contenant. les noms de toutes les variables de l'objet qui doivent être sérialisées.

La fonction Serialize vérifie d'abord si la méthode __sleep existe dans la classe lors de la sérialisation de la classe. Si elle est présente, cette méthode sera appelée avant que l'opération de sérialisation ne soit effectuée, et seuls les attributs du tableau renvoyés par __sleep seront sérialisés. Si __sleep ne renvoie rien, null sera sérialisé et une erreur de niveau E_NOTICE sera générée.

__sleep ne peut pas renvoyer les membres privés de la classe parent, sinon une erreur de niveau E_NOTICE se produira. Cette méthode est utile pour les objets volumineux mais qui n’ont pas besoin de contenir toutes les données.

2. __wakeup : Contrairement à __sleep, lorsque la fonction de désérialisation est en cours de désérialisation, elle vérifiera d'abord si la méthode __wakeup existe dans la classe. Si elle existe, la méthode sera appelée en premier puis l'opération de désérialisation sera effectuée. être effectué. Utilisé pour préparer les ressources requises par certains objets avant la désérialisation ou d'autres opérations d'initialisation.

3. __tostring : renvoie le contenu à afficher lorsqu'une classe est traitée comme une chaîne. Cette méthode doit renvoyer une chaîne et ne peut pas lever d'exception dans cette méthode, sinon une erreur fatale se produira.

Avant PHP5.2, cette méthode ne prenait effet que lors de l'utilisation directe de echo et print. Après cela, elle peut prendre effet dans n'importe quel environnement de chaîne si un objet qui ne définit pas la méthode __toString est converti en chaîne. , ce sera une erreur fatale.

(Tutoriel vidéo recommandé : Tutoriel vidéo php )

4. __invoke : à partir de PHP 5.3, cette méthode sera appelée lors de la tentative d'appel d'un objet en tant que fonction .

5. __set_state : À partir de PHP5.1, cette méthode statique sera appelée lorsque la fonction var_export est appelée pour exporter une classe. Cette méthode n'a qu'un seul paramètre, qui est un tableau contenant des attributs comme clés et des valeurs d'attribut comme valeurs. Cette méthode peut être utilisée pour contrôler quels membres peuvent être exportés.

6. __debugInfo : À partir de PHP5.6, cette méthode sera appelée lorsque la fonction var_dump est appelée pour imprimer les attributs de l'objet. Cette méthode peut être utilisée pour contrôler quels attributs peuvent être imprimés si cela. n'est pas définie, l'objet sera imprimé. Toutes les propriétés publiques, protégées et privées seront imprimées. Renvoie un tableau contenant des propriétés pouvant être imprimées.

7. __construct : fonction constructeur.

8. __destruct : destructeur.

9. __set, __get, __isset, __unset : attributs surchargés.

10. __call, __callstatic : méthodes surchargées.

11. __clone : ​​Copie d'objet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn