[PHP] 面向对象的魔术方法 (__set, __get, __unset, __isset)
__set
, __get
, __isset
, __unset
是面向对象里用来友操作的魔术方法. 先看看使用方法
echo $类->属性;
//取不存在属性或私有保护属性时, 以下方法被调用1
2
3public __get($属性名) {
echo $属性名;
}
$类->属性 = 值
//对不存在属性或私有保护属性时, 以下方法被调用1
2
3public __set($属性名, $值) {
echo $属性名, $值;
}
if (isset($类->属性)) { echo "属性不存在或无权"; }
//判断不存在或私有保护属性时, 以下方法被调用1
2
3
4public __isset($属性名) {
echo "你在判断".$属性名."是否存在";
return true; //我可以强行告诉你, 属性是存在的
}
unset($类->属性);
//删除不存在属性或私有保护属性时, 以下方法被调用1
2
3public __unset($属性名) {
echo "你想删除".$属性名."是一个不存在或无权的属性";
}
这几个魔法方法都有一个共性, 就是"属性"不存在或私有保护的属性 才调用魔法方法.
值得注意的是, if (isset($类->$属性名)) { ... }
__isset是可以有返回值的, 你可以强行返回true或false
刚看完燕十八的教程, 自己做个笔记. 也希望能帮到你
[PHP] 面向对象的魔术方法 (__set, __get, __unset, __isset)
http://edk24.com/2016/fbb4d50a.html