PHP魔术方法__ISSET、__UNSET使用实例
2018-09-22 15:26
__isset() – 在对类中属性或者非类中属性使用isset()方法的时候如果没有或者非公有属性,则自动执行__isset()的方法
__unset()- 在对类中属性或者非类中属性使用unset()方法的时候如果没有或者非公有属性,则自动执行__unset()的方法
复制代码 代码如下:
<?php
/**
* 针对类中的魔术方法 __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 <pre>;
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 <hr/>;
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