Maison > développement back-end > tutoriel php > Description des méthodes magiques en php

Description des méthodes magiques en php

无忌哥哥
Libérer: 2023-04-01 21:24:02
original
2127 Les gens l'ont consulté

* Méthode magique :

* 1. Les méthodes commençant par des doubles traits de soulignement dans la classe sont intégrées par le système. Les méthodes utilisateur ne doivent pas commencer par des doubles traits de soulignement

* 2. Magique La méthode est automatiquement déclenchée par le système sous certaines conditions et ne peut pas être appelée directement par l'utilisateur

* Remarque : C'est une bonne habitude d'ajouter un seul trait de soulignement devant les membres privés de la classe ;

* Par exemple : private $_salary; private function _listUsers(){...}

* Utiliser des méthodes magiques pour implémenter plusieurs intercepteurs d'accès aux objets

* Le so- appelé intercepteur : ce sont des erreurs ou des accès illégaux aux utilisateurs qui effectuent la détection et le contrôle.

* Nous avons déjà appris __get($fieldName) et __set(), qui sont les deux intercepteurs les plus couramment utilisés

* Nous allons maintenant apprendre un autre ensemble : __isset($fieldName) et __unset ($fieldName)

* 1. __isset() : Lors de la vérification si un attribut de classe existe en dehors de la classe, il sera appelé automatiquement

* 2. __unset() : À l'intérieur de la classe Lorsqu'un attribut de classe est détruit en externe, il sera automatiquement appelé

class Demo 
{
    private $name = 'peter';
    private $email = 'peter@php.cn';
    
    //当在类外使用isset()检测某个属性是否存在时自动调用
    public function __isset($name)
    {
        //对访问进行过滤:如果属性名是'name',返回false,否则允许访问
        //即除了'name'属性外的其它属性允许外部进行isset()检测
        return ($name=='name') ? false : true;
    }
}
//实例化 Demo 类
$obj = new Demo;
//检测$obj中是否有name属性,返回 
echo isset($obj->name)?'存在':'不存在';
echo &#39;<hr>&#39;;
Copier après la connexion

pour détecter si l'attribut email existe dans $obj et renvoyer qu'il existe, car __isset() dans la classe renvoie true

echo isset($obj->email)?&#39;存在&#39;:&#39;不存在&#39;;
Copier après la connexion

en externe Utilisez unset() pour détruire les attributs de classe

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal