PHP比它方便<?php
class A
{
private $str;
function __set($p, $v){
$this->$p = $v;
}
function __get($p){
return $this->$p;
}
}$a = new A;
$a->str = 123;
echo $a->str;
?>

解决方案 »

  1.   

    谁能解释一下楼上的代码,为什么$str变量是private的还能够实例化访问,在set方法中好像并没有体现出$str变量
      

  2.   

    _set(),_get()是两个特殊函数。
    分别会在赋值时,获取时自动调用。所以在$a->str = 123;时,实际上是调用了_set()方法赋值的,在echo $a->str;时,时调用了_get()方法。是通过方法赋值的,并不是在外部访问私有成员。php中有很多这样的函数,还有如_construt(构造函数),_destruct(析构函数),__call(重载)...可以把这一类函数叫做魔术函数。
      

  3.   

    PHP5中不存在private
    --------------------------
     那是php4
      

  4.   

    .net中的Property好像就是这个用途吧?为的是方便的访问私有成员,只不过写法不一样,
      

  5.   

    PHP4啊~我郁闷啊~5.0我实在是没有办法用,公司强烈要求不能学习5.0……偶只能自己在家里面瞎鼓捣……
      

  6.   

    to qs_25(射白鹿) :$str什么时候被实例化了,你把$a->str当str实例化吗?$a被实例化,调用自己的私有变量,有什么问题?