__get(),__set(),__isset(),__unset()

在给不可访问属性赋值时,__set()会被调用
读取不可访问属性的值时,__get()会被调用

当对不可访问属性调用isset()或empty()时,__isset()会被调用
当对不可访问属性调用unset()时,__unset()会被调用

所谓不可访问属性,实际上就是在调用某个属性时发现这个属性没有被定义,这时候不同的操纵会触发不同的魔术方法

这几个方法也被称为属性重载的魔术方法

 <?php
class MagicTest{
public function __get($name) {
return "Getting the property ".$name."<br/>";
}
public function __set($name,$value) {
echo "setting the property ".$name." to value ".$value."<br/>";
}
public function __isset($name) {
echo "__isset invoke"."<br/>";
return true;
}
public function __unset($name) {
echo "unsetting property ".$name;
}
} $obj = new MagicTest();
echo $obj->classname;
$obj->className="MagicClassX";
echo '$obj->ClassName is set?'.isset($obj->className)."<br/>";
echo '$obj->className is empty?'.empty($obj->className)."<br/>";
unset($obj->className);

输出为:

Getting the property classname
setting the property className to value MagicClassX
__isset invoke
$obj->ClassName is set?1
__isset invoke
$obj->className is empty?
unsetting property className

最新文章

  1. Anaconda 安装 ml_metrics package
  2. override与overload的区别
  3. 模版页面通过get传参数http://.../good_id/2;控制中可以直接使用echo $good_id;//2
  4. [terry笔记]Flashback
  5. oracle-12c-rac 报:ORA-01078
  6. FZU 2129 子序列个数 (动态规划)
  7. string字符串转成16进制
  8. 动态规划(奇异状态):HNOI 2001 产品加工
  9. C语言格式化输入输出函数
  10. RAW模板命名规范
  11. nginx 编译安装以及简单配置
  12. Java实现一个双向链表的倒置功能
  13. https://localhost:1158/em运行不正常
  14. emmc和ssd的区别【转】
  15. volatile双重检查锁定与延迟初始化
  16. php 导入excel文件
  17. [转]greenplum(postgresql)之数据字典
  18. 【总结】牛客职播第九期:您的美团点评offer已送到门口,快来与我们一起影响世界!
  19. HDU Today(自己的代码不知道哪里错了一直没A抄袭大神的)
  20. iOS之让UISearchBar搜索图标和placeholder靠左显示

热门文章

  1. android 取mac若干问题
  2. wiredtiger引擎性能——比levelDB更牛叉!
  3. oracle for loop 简单
  4. run as android application过程
  5. Azure新建的CentOS设置root账户的密码
  6. ThinkPHP中的find和select的区别
  7. HihoCoder1080 更为复杂的买卖房屋姿势(线段树+多重lazy)
  8. OTL调用Oracle存储过程
  9. docker镜像的导入和导出
  10. C# 多线程参数传递