PHP魔术办法之__iset,__unset详解(代码实例)
本文目标:
1、理解PHP中魔术办法的定义
2、理解__isset()魔术办法的使用处景
3、把握__isset()魔术办法的用途
4、理解__unset()魔术办法的使用处景
5、把握__unset()魔术办法的用途
(一)、理解PHP中魔术办法的定义
PHP 将所有以 __(两个下划线)开头的类办法保存为魔术办法。所以在定义类办法时,除了上述魔术办法,倡议不要以 __ 为前缀。
这2个魔术办法,还有个叫法,也还可以称作属性重载的魔术办法
所以当前为止我们学了4个属性重载的魔术办法了,还有上篇文章中的别的两个__get,__set
(二)、理解__isset()魔术办法的使用处景
当但愿在isset(不存在的属性)或者empty(不存在的属性)时,不报错,我们可以在类中定义__isset魔术办法,此刻它会被主动施行
(三)、把握__isset()魔术办法的用途
总结:
1、PHP中__isset在类中定义格局如下 public function __isset(参数1),这里留意必需是2个__,必需是__isset,并且必需是要带1个参数,多一个少一个都不可
2、当isset不存在的属性时,系统会主动触发对象所在类的定义好的__isset办法
3、当empty()不存在的属性时,系统会主动触发对象所在类的定义好的__isset办法
每个总结都是通过实践得出来的,此刻我们用实践来演示总结,这样可以促进懂得,让每个总结懂得起来愈加清楚,直不雅
案例一、
实践目标:
1、PHP中__isset在类中定义格局如下 public function __isset(参数1),这里留意必需是2个__,必需是__isset,并且必需是要带1个参数,多一个少一个都不可
详细代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术办法 public function __isset($name){ echo "主动施行了Animal类中的__isset办法<br/>"; } } $ani = new Animal(); ?>
运转结果如下:
空白,说明没有报错
此刻我们试着不加参数看下
详细代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术办法 public function __isset(){ echo "主动施行了Animal类中的__isset办法<br/>"; } } $ani = new Animal(); ?>
运转结果如下:
Fatal error: Method Animal::__isset() must take exactly 1 argument in D:\E-class\class-code\classing\index.php on line 11
因而可知,__isset办法有且只能有一个参数
案例二、
实践目标:
1、当isset不存在的属性时,系统会主动触发对象所在类的定义好的__isset办法
详细代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术办法 public function __isset($name){ echo "主动施行了Animal类中的__isset办法<br/>"; } } $ani = new Animal(); isset($ani->name); ?>
运转结果如下:
主动施行了Animal类中的__isset办法
我们发明其实我们没有手动的去调取__isset办法,也就是说没有写成$ani->__isset(),但是这个办法仍然施行了,由于什么呢?由于我们写了isset($ani->name);而这个name属性没有在类中定义,然后这个类中又定义了这个魔术办法,所以它就像魔术一样,忽然就被主动施行了
这里必然要留意,是2个下划线,不是一个,不然就不是魔术办法了,下面还是再来做下测试
详细代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术办法 试着少写一个_ public function _isset($name){ echo "主动施行了Animal类中的__isset办法<br/>"; } } $ani = new Animal(); isset($ani->name); ?>
运转结果如下:
空白
说明刚刚阿谁__isset办法没有被主动施行了,所以必然要留意是2个下划线,就仿佛结构函数和析构函数一样,都是两个下划线
案例三、
实践目标:
1、当empty()不存在的属性时,系统会主动触发对象所在类的定义好的__isset办法
详细代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术办法 public function __isset($name){ echo "主动施行了Animal类中的__isset办法<br/>"; } } $ani = new Animal(); empty($ani->name); ?>
运转结果如下:
主动施行了Animal类中的__isset办法
因而可知,会主动触发类中定义好的__iset魔术办法的场景,除了在isset不存在的属性时,还在empty不存在的属性时
(四)、理解__unset()魔术办法的使用处景
当但愿在unset()不存在的属性时可以自定义本人的逻辑,我们可以在类中定义__unset办法,此刻它会被主动施行,我们可以在里面写自定义逻辑
(五)、把握__unset()魔术办法的用途
总结:
1、PHP中__unset在类中定义格局如下 public function __unset(参数1),这里留意必需是2个__,必需是__unset,并且必需是要带1个参数,多一个少一个都不可
2、当unset不存在的属性时,系统会主动触发对象所在类的定义好的__unset办法
每个总结都是通过实践得出来的,此刻我们用实践来演示总结,这样可以促进懂得,让每个总结懂得起来愈加清楚,直不雅
案例一、
实践目标:
1、PHP中__unset在类中定义格局如下 public function __unset(参数1),这里留意必需是2个__,必需是__unset,并且必需是要带1个参数,多一个少一个都不可
详细代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术办法 public function __unset($name){ echo "主动施行了Animal类中的__unset办法<br/>"; } } $ani = new Animal(); ?>
运转结果如下:
空白
说明没有报错,此刻我们来试着不写参数看下
详细代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术办法 public function __unset(){ echo "主动施行了Animal类中的__unset办法<br/>"; } } $ani = new Animal(); ?>
运转结果为:
Fatal error: Method Animal::__unset() must take exactly 1 argument in D:\E-class\class-code\classing\index.php on line 11
因而可知,__unset魔术办法,参数有且只能有一个
案例二、
实践目标:
1、当unset不存在的属性时,系统会主动触发对象所在类的定义好的__unset办法
详细代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术办法 public function __unset($name){ echo "主动施行了Animal类中的__unset办法<br/>"; } } $ani = new Animal(); unset($ani->name); ?>
运转结果如下:
主动施行了Animal类中的__unset办法
我们发明其实我们没有手动的去调取__unset办法,也就是说没有写成$ani->__unset(),但是这个办法仍然施行了,由于什么呢?由于我们写了unset($ani->name);而这个name属性没有在类中定义,然后这个类中又定义了这个魔术办法,所以它就像魔术一样,忽然就被主动施行了
这里必然要留意,是2个下划线,不是一个,不然就不是魔术办法了,下面还是再来做下测试
详细代码如下:
<?php class Animal{ public function eat(){ } public function sleep(){ } //魔术办法 试着少写一个_ public function _unset($name){ echo "主动施行了Animal类中的__unset办法<br/>"; } } $ani = new Animal(); unset($ani->name); ?>
运转结果如下:
空白
因而可知,__unset魔术办法没有被主动施行了,所以必然要记得__unset魔术办法也是2个下划线
(六)、总结
1、本文主要讲了__isset,__unset的使用处景,定义乃至详细的实现办法
但愿本文能给大家带来必然的帮忙,感谢!!!
以上就是PHP魔术办法之__iset,__unset详解(代码实例)的具体内容,更多请关注百分百源码网其它相关文章!