Maison  >  Article  >  développement back-end  >  Méthodes magiques et constantes magiques en PHP

Méthodes magiques et constantes magiques en PHP

不言
不言original
2018-06-01 16:30:021853parcourir

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

Méthode magique

__construct()Méthode de construction

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)

__destruct()La méthode destructeur

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()Cette méthode magique est automatiquement appelée lors du clonage d'un objet

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 !

__set()Attribuer une valeur à une propriété inaccessible

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


__get()Obtenir la valeur d'une 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 !


__unset()Supprimer les attributs inaccessibles

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é !


Si rien n'est fait dans

__unset, la valeur par défaut est Impossible être supprimé (bien sûr aucune erreur ne sera signalée !)

__isset()

Déterminer si l'attribut inaccessible existe

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 !

__call()Lors de l'appel d'une méthode objet inaccessible (méthode non statique)

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 :

__callstatic()Appeler une méthode de classe inaccessible (méthode statique)

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 :

__invoke()

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

__toString()

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 :

Magic Constant

__CLASS__

représente le nom de la classe actuelle !

Notez la différence avec self :

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 !)

__METHOD__

représente le nom de la méthode actuelle !

Plusieurs "constantes magiques" PHP

Nom

Description

__LINE__

Le numéro de ligne actuel dans le fichier.

__FILE__

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).

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