你没看到他是在注释里面的吗?@property string adminName1
是说属性 adminName1 是一个字符串这只是为了帮助理解程序的说明文字

解决方案 »

  1.   

    我在yii框架里面看到的。但是我自己写了一个测试,也可以,如下:
    <?php/**
     * @property string adminName1
     */class test { private $adminName2;

    public function setName($pram1,$pram2) {
    $this->adminName1 = $pram1;
    $this->adminName2 = $pram2;
    }

    public  function getName() {
    return $result = $this->adminName1." ".$this->adminName2;
    }
    }
    $test = new test();
    $test->setName("admin1", "admin2");
    echo $test->getName();
    ?>
    //输出结果:admin1 admin2所以我想php是不是就有这个规则?
      

  2.   

    已经说了 是为了帮助理解程序的说明文字
    像你这样一改 
    /**
     * @property string adminName1
     */
    就没有说明的意义了,相反还会产生误解
    明明他说有一个 adminName1 属性,我怎么没看到呀?只看到 adminName2,是不是还要定义一个 adminName1 呀
      

  3.   

    楼主,我也在找这个问题的答案,回复的几位兄台确实没明白楼主的意思。没google到答案,我个人的理解,这是给IDE看的,
    @property关键字作为转义,IDE遇到这类注释,自动为其加入属性列表(即使它不存在,你可以按这个格式添加一个不存在的属性试试)。目的是为一些魔术属性变得显式,让调用的开发者更清楚,当然,需要IDE的支持
      

  4.   

    首先这个标识属性以后,属性还是未被定义,对这些属性的调用最后都是调用__set和__get方法。常见的使用方法是:public function __get($name)
    {
    $getter='get'.$name;
    if(method_exists($this,$getter))return $this->$getter();
    }最后对这些未定义属性的方法都转换为get/set函数的访问。