五十岁的灰哥
2016-10-22 09:40
<?php
class test{
protected $a=9,$b=2,$c;
public $d;
function __set($n,$v){
return $this->$n=$v+2;
}
function __get($name){
return $this->$name+2;
}
}
$a=new test();
$a->b=5;
echo $a->b;
$a->b=5 执行的是 __set($n,$v); return $this->$n=$v+2; 这里a对象中的$b属性进行5+2=7的赋值。最后你输出echo $a->b 时执行__get($name) return $this->$name+2; 又加了2 所以是9 。 这跟类中你自己定义的$b=2 ,无关 。因为你给它重新赋值了。
你首先创了一个 类test()的对象$a,后又创了一个类test()中不存在的属性b,你要对b赋值并输出,所以你的类中有__set(),__get,两个函数,在对b赋值时就访问了赋值函数__set(),输出时既访问了读取函数__get..........个人看法,哈哈
你首先创了一个 类test()的对象$a,后又创了一个类test()中不存在的属性b,你要对b赋值并输出,所以你的类中有__set(),__get,两个函数,在对b赋值时就访问了赋值函数__set(),输出时既访问了读取函数__get..........个人看法,哈哈
你首先创了一个 类test()的对象$a,后又创了一个类test()中不存在的属性b,你要对b赋值并输出,所以你的类中有__set(),__get,两个函数,在对b赋值时就访问了赋值函数__set(),输出时既访问了读取函数__get..........个人看法,哈哈
PHP进阶篇
181859 学习 · 2577 问题
相似问题