get中 $this->Name 用不了
class Test{
private $aa=1;
function __get($proName){
return $this->proName;
}
}
$test=new Test();
echo $test->aa;
class Test{
private $aa=1;
function __get($proName){
return $this->proName;
}
}
$test=new Test();
echo $test->aa;
2015-11-11
楼上错解。
$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的手册是最详细的。
举报