让我无法理解的代码,哪位老师或高手能指点指点,万分感谢。代码如下:classperson{private$n1;private$n2;private$n3;publicfunction__set($pro_name,$pro_val){$this->{$pro_name}=$pro_val;}publicfunction__get($pro_name){if(!isset($this->{$pro_name})){returnnull;}else{return$this->{$pro_name};}}}classa{public$n;public$x;publicfunction__construct($in,$ix){$this->n=$in;$this->x=$ix;}}$pef1=newperson();$pef1->n1='小明';$pef1->n2=200;echo$pef1->n1,'||',$pef1->n2;echoPHP_EOL;$c=newa('小小',2003);echo$c->n,'||',$c->x;第一个person类和第二个a类的调用问题,第一个类的成员属性是私有的,老师说过可以用__set和__get来统一来管理,这个没问题。可问题是创建对象的时候,我可以不用和创建的对象名一致就能调用。比如说:我创建一个person类,然后再创建一个$p1=newperson();对象,然后我调用,正常是这个的$p1->n1="小明";但现在我却不用这样也能调用,$uu->n1="小明";。这是为什么呢?第二个a类主要是我为了证明是不是所有的类在创建对象后,都可以不用对象名来调用,结果发现不行。这个我可以理解,但第一种我就不能理解了。为什么protected和private的成员属性和方法在使用了__set和__get这一对函数后在对象调用的时候就可以不用对象名呢?
达令说
相关分类