Maison >développement back-end >Problème PHP >Quelles sont les méthodes magiques en php ?

Quelles sont les méthodes magiques en php ?

青灯夜游
青灯夜游original
2021-06-30 13:55:251702parcourir

Les méthodes magiques incluent : "__construct()", "__destruct()", "__set()", "__get()", "__isset()", "__unset()", "__sleep() " ", "___wakeup()", "__call()" et ainsi de suite.

Quelles sont les méthodes magiques en php ?

L'environnement d'exploitation de ce tutoriel : système windows7, version PHP7.1, ordinateur DELL G3

php magic (compétence) ) Méthode

Dans la programmation orientée objet, PHP fournit une série de méthodes magiques. Ces méthodes magiques offrent beaucoup de commodité pour la programmation, et leur rôle dans PHP est très important. . Les méthodes magiques en PHP commencent généralement par __ (deux traits de soulignement) et n'ont pas besoin d'être explicitement appelées mais sont automatiquement appelées sous certaines conditions.

魔术方法 作用
__construct() 实例化类时自动调用
__destruct() 类对象使用结束时自动调用
__set() 在给未定义的属性赋值时自动调用
__get() 调用未定义的属性时自动调用
__isset() 使用 isset() 或 empty() 函数时自动调用
__unset() 使用 unset() 时自动调用
__sleep() 使用 serialize 序列化时自动调用
__wakeup() 使用 unserialize 反序列化时自动调用
__call() 调用一个不存在的方法时自动调用
__callStatic() 调用一个不存在的静态方法时自动调用
__toString() 把对象转换成字符串时自动调用
__invoke() 当尝试把对象当方法调用时自动调用
__set_state() 当使用 var_export() 函数时自动调用,接受一个数组参数
__clone() 当使用 clone 复制一个对象时自动调用
__debugInfo() 使用 var_dump() 打印对象信息时自动调用

Ce qui suit est une brève introduction à plusieurs méthodes magiques couramment utilisées :

1. La méthode __set()

sera automatiquement appelée lors de l'attribution de valeurs à des attributs de classe non définis ou invisibles. dans l'environnement actuel. Le format syntaxique pour définir cette méthode est le suivant :

public function __set($key, $value){
    ... ... ;
}

Parmi eux, le paramètre $key est le nom de la variable à exploiter, et $value est la valeur de la variable $key.

2. Méthode __get()

Lors de l'appel ou de l'obtention d'attributs de classe non définis ou invisibles dans l'environnement actuel, la méthode __get() sera automatiquement appelée pour définir le format de syntaxe de la méthode. Comme suit :

public function __get($name){
    ... ... ;
}

Le paramètre $name est le nom de la variable à opérer.

3. Méthode __isset()

Lorsque la fonction isset() ou empty() est utilisée en dehors de la classe pour un attribut inaccessible ou n'existe pas dans la classe, __isset() sera automatiquement appelée méthode, le format de syntaxe de cette méthode est le suivant :

public function __isset($name){
    ... ... ;
}

Le paramètre $name est le nom de l'attribut auquel accéder.

La fonction isset() peut vérifier si une variable existe et n'est pas NULL, en passant une variable en paramètre, si la variable passée existe, elle renvoie vrai, sinon elle renvoie faux. La fonction

empty() peut vérifier si une variable est vide. Elle doit également transmettre une variable en paramètre. Si la variable n'existe pas ou si la valeur de la variable est égale à FALSE, alors. la variable sera considérée comme n'existant pas.

Les membres publics d'une classe sont accessibles en dehors de la classe, mais les membres privés ne sont pas accessibles en dehors de la classe. En d’autres termes, nous pouvons utiliser la fonction isset() ou empty() pour vérifier si les propriétés publiques de la classe existent, mais ces deux fonctions ne sont pas valides pour les propriétés privées de la classe.

Si vous souhaitez utiliser la fonction isset() ou empty() pour détecter les propriétés privées de la classe, il suffit d'ajouter une méthode __isset() à la classe lorsqu'elle est utilisée en dehors de la classe isset(. ) ou la fonction empty(), la méthode __isset() de la classe sera automatiquement appelée.

4. Méthode __unset()

Lorsque la fonction unset() est utilisée en dehors de la classe sur un attribut inaccessible ou n'existant pas dans la classe, la méthode __unset() sera appelée automatiquement. Cette méthode Le format de syntaxe est le suivant :

public function __unset($name){
    ... ... ;
}

Le paramètre $name est le nom de l'attribut auquel accéder.

Jetons d'abord un coup d'œil à la fonction unset(). La fonction unset() est de supprimer la variable spécifiée. Une ou plusieurs variables doivent être transmises en tant que paramètres. n'a pas de valeur de retour.

De même, nous pouvons également utiliser la fonction unset() pour supprimer les attributs de membre dans la classe en dehors de la classe. Semblable à la méthode __isset() présentée ci-dessus, si vous souhaitez supprimer les attributs publics de la classe, vous pouvez directement utiliser la fonction unset() ; si vous souhaitez supprimer les attributs privés de la classe, vous devez ajouter un __unset ; () à la méthode de classe.

5. Méthode __call()

Lorsqu'une méthode inaccessible ou inexistante dans la classe est appelée, la méthode __call() sera appelée. Le format de syntaxe de cette méthode est le suivant :

public function __call($name, $arguments){
    ... ... ;
}

où $name est le nom de la méthode à appeler et $arguments est un tableau de paramètres passés à $name.

Lorsque la méthode appelée n'existe pas, la méthode __call() sera automatiquement appelée et le programme continuera à s'exécuter, évitant ainsi l'arrêt du programme causé par une erreur lorsque la méthode appelante n'existe pas.

6. Méthode __clone()

Vous pouvez utiliser le mot-clé clone pour copier un objet Une fois la copie terminée, si la méthode __clone() est définie, l'objet nouvellement créé (l'objet. objet généré en copiant ), la méthode __clone() sera automatiquement appelée, grâce à laquelle nous pourrons effectuer certaines opérations nécessaires. Le format de syntaxe de la méthode __clone() est le suivant :

public function __clone(){
    ... ... ;
}

Cette fonction ne nécessite pas la transmission de paramètres.

Apprentissage recommandé : "Tutoriel vidéo PHP"

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