php中的__set,__get
php中的__set,__get用法
__set,php中类的对象成员设置函数,该方法是用来设置私有属性,给一个未定义的属性赋值时会调用该方法;
NO1:声明设置时的方式
function __set($property, $value){
方法体 //一般用来进行赋值并可以判断值的非法性
}
参数$property是属性名,$value 为属性名对应的值
NO2:使用方法
a:定义一个对象如下:
$demo_obj = new Demo('张三',‘20’);
b:更改对象属性值,将姓名 张三 替换为李四
$demo_obj->name = '李四';
此时会自动调用__set()方法,当没有__set()方法,将会报错;
__get(),获得一个类成员变量时调用。当类的成员被定义为private,我们在程序运行时,通过它可以在对象外部获取私有成员的属性值
NO1:声明设置时的方式
function __get($property){
方法体 //一般用来私有对象成员值
}
参数$property是属性名
NO2:使用方法
a:类Demo中定义私有成员变量,并定义构造函数
private $ua;
private $ub;
function __construct($ua, $ub){
$this->ua = $ua;
$this->ub = $ub;
}
b:实例化对象,并赋值
$test_obj = new Demo('aa', 'bb');
c:定义__get()函数获取私有成员值
function __get($property){
if($property == 'ua') return $this->ua;
else if($property == 'ub') return $this->ub;
}
d:直接访问私有属性ua或ub,将自动调用__get()方法,根据对象本身情况返回不同值
echo "Ua = ".$test_obj->ua;
echo "Ub = ".$test_obj->ub;
执行后返回:Ua = aa Ub=bb