unset()魔术方法,与isset()魔术方法一样主要用于在对未定义的属性调用unset()函数时被自动调用。
在class类中,对public权限的成员属性可以直接使用unset()函数销毁释放内存。
但对于设置为 private 或 protected 的成员属性则不行,需要在类里面加上一个 __unset() 方法:
<?php
class Test {
private $bbb = '1';
public function __unset($name) {
echo '捕捉到使用unset()函数销毁私有成员属性<br/>';
return unset($this->$name);
}
}
$obj = new Test();
var_dump(unset($obj->bbb));