Quelles sont les méthodes magiques en PHP? et comment les mettre en œuvre?



Cet article vous fournira une connaissance détaillée et complète des différentes méthodes magiques en PHP avec des exemples.

Dans , les fonctions spéciales peuvent être définies de manière à pouvoir être appelées automatiquement et ne nécessitent aucun appel de fonction pour exécuter le code à l'intérieur de ces fonctions. Cette fonctionnalité est disponible dans une méthode spéciale connue sous le nom de méthodes magiques. Dans cet article, nous discuterons des meilleures méthodes magiques en PHP.

Que sont les méthodes magiques en PHP?

Les méthodes qui commencent par 2 traits de soulignement (__) sont généralement appelées méthodes Magic en PHP. Ces noms de méthodes sont limités à une liste de PHP les mots clés pris en charge qui sont réservés. Ainsi, aucune fonction ne doit être définie avec le nom de méthodes magiques PHP.





Magic-Methods-in-PHP

Habituellement, ces fonctions doivent être définies par l'utilisateur et il n'est pas nécessaire de les appeler explicitement.



Liste des méthodes magiques en PHP

  • __construction()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get (propriété $)
  • __set ($ propriété, $ valeur)
  • __isset ($ content)
  • __unset ($ content)
  • __dormir()
  • __Réveillez-vous()
  • __toString ()
  • __invoquer()
  • __set_state ($ tableau)
  • __cloner()
  • __les informations de débogage()
  • __construction(): C'est une méthode qui est appelée automatiquement après la création d'un objet. N'importe quel nombre d'arguments peut être défini ici qui sera transmis lors de la création des objets.
exemple de classe {function user_def () {echo 'constructeur défini par l'utilisateur'} function __construct () {echo 'constructeur prédéfini'}} $ obj = new sample ()?>

  • __destruct (): Destructor est une caractéristique commune du langage orienté objet qui se déclenche dès qu'il n'y a pas d'autres références à un objet particulier.
user_def () // vérifier que l'objet est détruit ou non echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Cette méthode est appelée lorsqu'une méthode non définie ou inaccessible est appelée. Ce qui signifie qu'elle est appelée lorsqu'une méthode non définie ou inaccessible est appelée sur un objet.
run ('teacher') // Si la méthode qui n'existe pas est appelée dans l'objet, alors la méthode __call () sera appelée automatiquement. $ obj-> manger ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Cette méthode est appelée lorsqu'une méthode non définie ou inaccessible est appelée de manière statique.
user_define ()?>

surcharge et remplacement de méthode dans l'exemple java
  • __get (propriété $): Cette méthode est utilisée pour obtenir les valeurs des propriétés de classe créées dynamiquement par la surcharge de propriétés PHP.
name = $ name $ this-> reg = $ reg} fonction publique __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} else {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Instanciez l'objet avec la classe Student et attribuez les valeurs initiales aux propriétés avec le constructeur. echo 'Nom :'. $ obj-> nom. '' // Lors de l'accès à la propriété privée, la méthode __get () sera appelée automatiquement, afin que nous puissions obtenir la valeur de la propriété indirectement. echo 'reg :'. $ obj-> reg. '' // La méthode __get () est appelée automatiquement , et elle renvoie des valeurs différentes en fonction de l'objet lui-même. ?>

  • __set ($ propriété, $ valeur): Cette méthode est utilisée pour mettre des valeurs pour les propriétés de classe créées dynamiquement par la surcharge de propriétés PHP.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'Mon name est '. $ this-> name.', Mon numéro d'enregistrement est '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Notez que la valeur initiale sera modifiée par le code au dessous de. $ obj-> name = 'Sushma' // La propriété 'name' sera attribuée avec succès. S'il n'y a pas de méthode __set (), le programme lèvera une exception. $ obj-> age = 16 // La propriété 'reg' sera attribuée avec succès. $ obj-> reg = 160 // 160 est une valeur non valide, donc elle ne peut pas être attribuée. $ obj-> fun ()?>

  • __isset ($ content); Cette méthode sera appelée lors de l'appel de isset () ou empty () pour un membre indéfini ou inaccessible. Il est appelé automatiquement en vérifiant si une propriété surchargée requise est définie ou non, en utilisant la fonction PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __isset ($ content) {echo 'La propriété {$ content} est privée , la méthode __isset () est appelée automatiquement. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Initialement attribué. echo isset ($ obj-> gender), '' echo isset ($ obj-> nom), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ content): Cette méthode sera appelée lors de l'appel de reset () pour un membre non défini ou inaccessible.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'Elle est appelée automatiquement lorsque nous utilisons la méthode unset () en dehors de la classe. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Initialement attribué. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __dormir(): Cette méthode est appelée en premier lors de l'exécution de serialize (). Il renvoie le tableau de propriétés de l'objet lors du nettoyage des objets de classe PHP avant la sérialisation.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Elle est appelée lorsque la méthode serialize () est appelée en dehors de la classe. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Il doit retourner une valeur dont les éléments sont le nom des propriétés renvoyées. }} $ obj = new Student ('Ashok') // Initialement attribué. echo sérialiser ($ obj) echo ''?>

  • __Réveillez-vous(): Cette méthode est appelée lors de l'exécution de la désérialisation (). Cela inverserait le travail de restauration des propriétés et des ressources des objets lors de l'appel de la désérialisation ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Elle est appelée lorsque la méthode serialize () est appelée en dehors de la classe. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Il doit retourner une valeur dont les éléments sont le nom des propriétés renvoyées. } public function __wakeup () {echo 'Elle est appelée lorsque la méthode unserialize () est appelée en dehors de la classe. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Initialement attribué. var_dump (sérialiser ($ obj)) var_dump (désérialiser (sérialiser ($ obj)))?>

  • __toString (): Cette méthode sera appelée lors de l'utilisation de la méthode echo pour imprimer directement un objet. Il est censé renvoyer une valeur de chaîne lors de l'utilisation d'instances de classe avec des instructions d'impression PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Initialement attribué. echo $ obj?>

  • __invoquer(): Cette méthode est définie dans une classe qui sera appelée en essayant d'appeler un objet de manière à appeler une fonction.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __invoke () {echo 'Ceci est un objet'}} $ obj = new Student ('Ashok') // Initialement attribué . $ obj ()?>

  • __set_state ($ array): Cette méthode est appelée lors de l'appel de var_export (). C'est une méthode statique appelée lors de l'exportation du tableau de propriétés des objets et attend une telle variable de tableau comme argument.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Initialement attribué. var_export ($ obj)?>

  • __cloner(): Cette méthode est appelée lorsque l'objet est copié.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'vous clonez l'objet. '}} $ obj = new Student (' Ashok ') // Initialement attribué. $ obj2 = clone $ obj var_dump ('objet1:') var_dump ($ obj) echo '' var_dump ('objet2:') var_dump ($ obj2)?>

  • __les informations de débogage(): Cette méthode est appelée par var_dump () lors du vidage d'un objet pour obtenir les propriétés à afficher. Si la méthode n'est pas définie sur un objet, toutes les propriétés publiques, protégées et privées seront affichées.
prop = $ val} fonction publique __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (new Sample (22))?>

Avec cela, nous arrivons à la fin de cette méthode magique dans l'article PHP. J'espère que vous avez une idée des différentes méthodes magiques en PHP.

Vérifiez par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier.

Vous avez une question pour nous? Veuillez le mentionner dans la section des commentaires de ' Méthodes magiques dans PHP »Et je vous répondrai.