PHP类中的四个魔术方法
这篇文章论述的是php的四个魔术方法:__get()、__set()、__isset()、__unset()。
之前很少研究php类里面为什么要有这些魔术方法,所以不了解,到最近才慢慢明白这些方法是用来增强程序的健壮性。OK,接下来记录下这几个方法的用途。首先建一个实验类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <span style="font-size: large;"> class persion{ function __construct(){ $this->name = "xujs"; $this->age = 20; } function __set($name,$value = false){ $value = ($value)?$value:"not value"; $this->$name = $value; } function __get($name){ return $this->name; } function __isset($name){ if(isset($this->$name)){ return 1; }else{ return 0; } } function __unset($name){ unset($this->$name); } private $name; private $age; } $me = new persion; </span> |
1、__get($name)
触发情况:当实例访问一个类的非public属性时触发
如echo $me->name;
2、__set($name,$value)
触发情况:当实例访问一个类的非public属性或不存在属性时触发
如$me->grade = 2010;
3、__isset($name)
触发情况:使用isset()函数判断一个类属性时触发
如isset($me->grade);
4、__unset($name)
触发情况:使用unset()函数注销一个类的某一个属性时触发
如unset($me->name);
注意:魔术方法如果一旦定义后,每次实例化后是会自动调用的,无需再手动调用,另外,每个魔术方法的参数都应该是固定的,即是对应不变的,可变的是程序的内容,默认触发后会有怎样的效果就取决于你的程序怎么写。
终端通过stats命令查看memcache服务器当前使用状态 简单了解PHP底层的运行机制