__isset(), appelé lorsque isset() ou empty() est appelé sur une propriété inaccessible
Avant d'examiner cette méthode, regardons l'application de isset( ), isset () est une fonction utilisée pour déterminer si une variable est définie. Elle transmet une variable en tant que paramètre. Si la variable transmise existe, elle renvoie vrai, sinon elle renvoie faux.
Donc, si vous utilisez la fonction isset() en dehors d'un objet pour déterminer si les membres à l'intérieur de l'objet sont définis, pouvez-vous l'utiliser ?
Il existe deux situations. Si les membres de l'objet sont publics, nous pouvons utiliser cette fonction pour mesurer les attributs des membres. S'il s'agit d'attributs de membres privés, cette fonction ne fonctionnera pas. privé Il est encapsulé et non visible de l’extérieur. Nous ne pouvons donc pas utiliser la fonction isset() en dehors de l'objet pour déterminer si les attributs des membres privés ont été définis ? Bien sûr, c’est possible, mais ce n’est pas gravé dans le marbre.
Il vous suffit d'ajouter une méthode __isset() à la classe. Lorsque la fonction isset() est utilisée en dehors de la classe pour déterminer si les membres privés de l'objet sont définis, la classe sera automatiquement appelée. La méthode __isset() à l’intérieur nous aide à effectuer de telles opérations.
Le rôle de __isset() :
Lorsque isset() ou empty() est appelé sur une propriété inaccessible, __isset() sera appelé.
Veuillez consulter la démonstration de code suivante :
name = $name; $this->age = $age; $this->sex = $sex; } /** * @param $content * * @return bool */ public function __isset($content) { echo "当在类外部使用isset()函数测定私有成员{$content}时,自动调用
"; echo isset($this->$content); } } $person = new Person("小明", 25); // 初始赋值 echo isset($person->sex),"
"; echo isset($person->name),"
"; echo isset($person->age),"
";
Les résultats d'exécution sont les suivants :
1 // public 可以 isset() 当在类外部使用isset()函数测定私有成员name时,自动调用 // __isset() 内 第一个echo 1 // __isset() 内第二个echo 当在类外部使用isset()函数测定私有成员age时,自动调用 // __isset() 内 第一个echo 1 // __isset() 内第二个echo
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!