Home > Article > Backend Development > Detailed explanation of __isset() method in PHP
__isset(), called when isset() or empty() is called on an inaccessible property
Before looking at this method, let’s take a look at the application of isset() function, isset () is a function used to determine whether a variable is set. A variable is passed in as a parameter. If the passed variable exists, true is returned, otherwise false is returned.
So if you use the isset() function outside an object to determine whether the members inside the object are set, can you use it?
There are two situations. If the members in the object are public, we can use this function to measure the member attributes. If they are private member attributes, this function will not work. The reason is that they are private. It is encapsulated and not visible from the outside. So we can't use the isset() function outside the object to determine whether the private member attributes have been set? Of course it's possible, but it's not set in stone.
You only need to add an __isset() method to the class. When the isset() function is used outside the class to determine whether the private members in the object are set, the class will be automatically called. The __isset() method inside helps us complete such operations.
The role of __isset():
When isset() or empty() is called on an inaccessible property, __isset() will be called.
Please see the following code demonstration:
<?php class Person { public $sex; private $name; private $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } /** * @param $content * * @return bool */ public function __isset($content) { echo "当在类外部使用isset()函数测定私有成员{$content}时,自动调用<br>"; echo isset($this->$content); } } $person = new Person("小明", 25); // 初始赋值 echo isset($person->sex),"<br>"; echo isset($person->name),"<br>"; echo isset($person->age),"<br>";
The running results are as follows:
1 // public 可以 isset() 当在类外部使用isset()函数测定私有成员name时,自动调用 // __isset() 内 第一个echo 1 // __isset() 内第二个echo 当在类外部使用isset()函数测定私有成员age时,自动调用 // __isset() 内 第一个echo 1 // __isset() 内第二个echo
The above is the detailed content of Detailed explanation of __isset() method in PHP. For more information, please follow other related articles on the PHP Chinese website!