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