__isset() – 在对类中属性或者非类中属性使用isset()方法的时候如果没有或者非公有属性,则自动执行__isset()的方法
__unset() - 在对类中属性或者非类中属性使用unset()方法的时候如果没有或者非公有属性,则自动执行__unset()的方法
复制代码 代码如下:
/**
* 针对类中的魔术方法 __isset() 和 __unset() 的例子
*/
class Example {
public $public;
protected $protected;
private $private;
public function __construct(){
$this->public = \’pub\’;
$this->protected = \’pro\’;
$this->private = \’pri\’;
}
public function __isset($var){
echo \’这里通过__isset()方法查看属性名为 \’.$var.\”\\n\”;
}
public function __unset($var){
echo \’这里通过__unset()方法要销毁属性名为 \’.$var.\”\\n\”;
}
}
$exa = new Example;
echo \'
\’;
var_dump(isset($exa->public));
echo \”\\n\”;
var_dump(isset($exa->protected));
echo \”\\n\”;
var_dump(isset($exa->private));
echo \”\\n\”;
var_dump(isset($exa->noVar));
echo \”\\n\”;
echo \'
\’;unset($exa->public);
var_dump($exa);echo \”\\n\”;
unset($exa->protected);
echo \”\\n\”;
unset($exa->private);
echo \”\\n\”;
unset($exa->noVar);
echo \”\\n\”;结果如下:
bool(true)
这里通过__isset()方法查看属性名为 protected
bool(false)
这里通过__isset()方法查看属性名为 private
bool(false)
这里通过__isset()方法查看属性名为 noVar
bool(false)
复制代码 代码如下:
object(Example)#1 (2) {
[\”protected:protected\”]=>
string(3) \”pro\”
[\”private:private\”]=>
string(3) \”pri\”
}这里通过__unset()方法要销毁属性名为 protected
这里通过__unset()方法要销毁属性名为 private
这里通过__unset()方法要销毁属性名为 noVar