一朵大白天
是啊,
GNEZ
楼上错解。
$this->proName; 其实就是在访问对象的proName属性,但是这个属性是不存在的,所以肯定报错。
你一定是觉得proName会被替换成$proName的值吧。
你肯定纳闷过为什么类的属性在定义的时候要$,如$aa,但访问的时候却不需要,如$this->aa;
原因就在于此,为了避免歧义。
__get的真正用法是这样的:
class Demo{
private $pro = array();
public __set($name, $value){
$this->pro[$name] = $value;
}
public __get($name){
if(isset($this->pro[$name])){
return isset($this->pro[$name];
}
return null;
}
}有什么不懂得去看手册吧,PHP的手册是最详细的。
全民工作狂
qingfa
举个简单的例子,当类里面没有属性$name; 但是你不小心访问这个属性,这个时候就会出错。但是让你可以设置魔术方法__get($name){ return $name . "不存在"};就会自动调用__get($name);这样程序就会不因为你访问了一个不存在的属性报错而中断执行
熊猫爱吃竹
这个需要了解魔术方法__get/__set方法的特性,如果该类中有定义魔术方法,当访问不存在的属性时,__get方法就会被调用,有多少属性不存在,程序就会显示多少提示(这个可以在魔术方法中自定义的),__set方法同理
生活不止柴米油盐
好好!!
张剑培
墨西哥鸡味卷