Maison > Article > développement back-end > Méthodes magiques et constantes magiques en PHP
Cet article présente principalement les méthodes magiques et les constantes magiques en PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Lors de l'instanciation d'un objet, ajoutez quelques listes de paramètres entre parenthèses après le nom de la classe (qui peuvent être comprises comme des paramètres réels du constructeur)
est une paire avec la méthode de construction, et la méthode de construction est dans un objetC'est automatiquement appelée lorsqu'il est "né", et la méthode destructeur est automatiquement appelée par le système lorsqu'un objet "disparaît" !
La méthode destructeur est appelée avant que l'objet ne disparaisse
Plusieurs situations où l'objet disparaît
1,Utilisez explicitement la fonction unset pour détruire une variable
2,Une fois l'exécution du script terminée, elle sera également automatiquement détruite
3,La modification de la valeur de la variable objet sera également automatiquement détruite
Le rôle de la méthode destructrice
Le rôle principal est de libérer les ressources supplémentaires occupées par l'objet ! Plutôt que l’objet lui-même !
Remarque :
La méthode destructeur ne nécessite généralement pas de définitions supplémentaires. Elle ne doit être définie que lorsque des ressources supplémentaires (ressources n'appartenant pas à cet objet) sont libérées !
Résumer les caractéristiques des méthodes de construction et des méthodes destructrices :
1,sont toutes représentées par __ Commence par
2,appelle automatiquement
3,appelle la méthode correspondante uniquement lorsqu'une situation spécifique se produit
Il existe de nombreuses méthodes en php qui satisfont simultanément aux trois caractéristiques ci-dessus, qui sont appelées « méthodes magiques » !
Clone un objet La méthode magique est automatiquement appelée à la création de l'objet ! Responsable de l'initialisation des nouveaux objets clonés !
Attribuer des valeurs aux attributs qui ne sont pas accessibles à : __set()
Une fois la méthode magique __set() définie, lorsque attribue une valeur à une propriété inaccessible, sera exécuté automatiquement Dans cette méthode, à ce moment-là, la puissance de traitement est donnée à l'utilisateur lui-même !
Cette méthode magique nécessite deux paramètres :
L'un est le nom de l'attribut inaccessible
L'une est la valeur de la propriété inaccessible
Récupérer la valeur d'une propriété inaccessible : __get()
Une fois la méthode magique __get() définie, obtient la valeur d'un attribut inaccessible, exécutera automatiquement cette méthode. A ce moment, la puissance de traitement est donnée à l'utilisateur lui-même !
Cette méthode magique ne nécessite qu'un seul paramètre, qui est le nom de l'attribut !
Remarque :
__get et __set sont souvent utilisés dans de vrais projets. Ils sont tous apparaissent par paires ! De plus, ces deux méthodes sont souvent utilisées pour traiter les propriétés privées des objets par lots !
Le code ci-dessus est OK Empêchez les utilisateurs d'ajouter des attributs pour garantir que la structure interne d'origine des attributs ne change pas !
Supprimer les attributs inaccessibles : __unset()
De manière générale, vous pouvez utiliser la fonction unset Supprimer un public propriété d'un objet :
Cependant, si la propriété est inaccessible (comme privée ou n'existe pas), le __unset sera automatiquement exécutée. Le succès de la suppression dépend de l'implémentation interne de __unset !
Cette méthode ne nécessite également qu'un seul paramètre, qui est le nom de l'attribut actuellement supprimé !
__unset, la valeur par défaut est Impossible être supprimé (bien sûr aucune erreur ne sera signalée !)
__isset()Déterminez si l'attribut inaccessible existe : __isset()
Si l'attribut est un attribut inaccessible, il sera automatiquement déclenché pour juger si l'attribut existe. exécution!De même, cette méthode nécessite également un paramètre, le nom de l'attribut que la technologie doit actuellement déterminer !
Lors de l'appel d'une méthode objet inaccessible (méthode non statique) ) Méthode statique), la méthode magique sera exécutée automatiquement ! Réflexion : De combien de paramètres cette méthode magique a-t-elle besoin en ce moment ? Paramètre 1 : Nom de la méthode, chaînetype Paramètre 2 : type tableau, car le nombre de paramètres est incertain, tous les paramètres ne peuvent être mis que dans un tableau Si cette méthode ne fait rien : Lorsqu'une méthode de classe inaccessible (méthode statique) est appelée, la méthode magique sera automatiquement exécutée Lors de la définition de cette méthode, vous devez ajouter static devant le nom de la méthode , car la méthode devrait le faire. soyez une méthode statique! Une petite valise Concevoir un cours de mathématiques pour atteindre les objectifs suivants : Méthode d'appel f1 : 1, Si 1 les paramètres sont transmis, renvoie la valeur carrée 2 , Si 2 paramètres sont passés, renvoie la somme de leurs carrés 3, comment passer 3 paramètres, renvoyer la somme de leurs cubes est réalisé en utilisant la surcharge de méthode : Lorsque nous appelons l'objet en tant que fonction (ou méthode), la méthode magique sera automatiquement exécutée ! Actuellement, ce n’est pas très utilisé ! Rappelez-vous les fonctions anonymes que vous avez apprises plus tôt : Remarque : La raison pour laquelle vous pouvez utiliser l'objet de fermeture $func pour appeler avec succès la fonction est qu'il existe une __invokeméthode magique Lorsque nous utilisons un objet comme chaîne, la méthode d'imitation sera automatiquement effectuée ! Et la valeur de retour de cette méthode peut généralement être le résultat de la sérialisation de l'objet dans une chaîne ! En fait, le système déclenchera automatiquement l'exécution de la méthode __toString : représente le nom de la classe actuelle ! Notez la différence avec self : fait référence à la classe elle-même ( A structure qui inclut plus que le nom de la classe), tandis que __CLASS__ n'est qu'un nom de classe (le nom de la classe n'est qu'une partie de la classe !) représente le nom de la méthode actuelle ! Plusieurs "constantes magiques" PHP Nom Description Le chemin complet et le nom du fichier. S'il est utilisé dans un fichier inclus, renvoie le nom du fichier inclus. __DIR__ Le répertoire où se trouve le fichier. S'il est utilisé dans un fichier inclus, renvoie le répertoire où se trouve le fichier inclus. C'est équivalent à dirname(__FILE__). Les noms de répertoire n'incluent pas la barre oblique finale, sauf s'il s'agit du répertoire racine. __FUNCTION__ Nom de la fonction. Cette constante renvoie le nom de la fonction lors de sa définition (sensible à la casse). __CLASS__ Le nom de la classe renvoie le nom lorsque la classe a été définie (cas-. sensible) . Notez que depuis PHP 5.4, __CLASS__ fonctionne également pour les traits. Lorsqu'il est utilisé dans une méthode de trait, __CLASS__ est le nom de la classe qui appelle la méthode de trait. __TRAIT__ Le nom du Trait. Depuis PHP 5.4, cette constante renvoie le nom du trait tel qu'il a été défini (sensible à la casse). Le nom du trait inclut la portée dans laquelle il est déclaré (par exemple FooBar). __METHOD__ Le nom de la méthode de la classe (récemment ajouté dans PHP 5.0.0). Renvoie le nom de la méthode lors de sa définition (sensible à la casse). __NAMESPACE__ Le nom de l'espace de noms actuel (sensible à la casse). __call()Lors de l'appel d'une méthode objet inaccessible (méthode non statique)
__callstatic()Appeler une méthode de classe inaccessible (méthode statique)
__invoke()
__toString()
Magic Constant
__CLASS__
__METHOD__
__LINE__
Le numéro de ligne actuel dans le fichier.
__FILE__
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!