• 技术文章 >后端开发 >php教程

    php中@property的作用?

    2016-06-23 14:38:47原创5070
    我发现用@property 申明属性后,类中也可以使用,如下面的代码!请问adminName1和adminName2有什么区别?是不是一般申明属性都用@property?

    /**
    * @property string adminName1
    */

    class test {

    private $adminName2;

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

    ?>


    回复讨论(解决方案)

    你没看到他是在注释里面的吗?

    @property string adminName1
    是说属性 adminName1 是一个字符串

    这只是为了帮助理解程序的说明文字

    我看到他在注释里,知道在其他地方调用的时候可以用于提示信息!我不明白为什么在类里面可以使用它?

    你根据它的规则走就是啦。这是出自哪里的代码?

    我在yii框架里面看到的。但是我自己写了一个测试,也可以,如下:

    /**
    * @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是不是就有这个规则?

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

    你在说什么?

    已经说了 是为了帮助理解程序的说明文字
    像你这样一改
    /**
    * @property string adminName1
    */
    就没有说明的意义了,相反还会产生误解
    明明他说有一个 adminName1 属性,我怎么没看到呀?只看到 adminName2,是不是还要定义一个 adminName1 呀
    这位师兄,非常感谢你的回答,但是我觉得你没有明白的我意思!

    楼主,我也在找这个问题的答案,回复的几位兄台确实没明白楼主的意思。

    没google到答案,我个人的理解,这是给IDE看的,
    @property关键字作为转义,IDE遇到这类注释,自动为其加入属性列表(即使它不存在,你可以按这个格式添加一个不存在的属性试试)。

    目的是为一些魔术属性变得显式,让调用的开发者更清楚,当然,需要IDE的支持

    首先这个标识属性以后,属性还是未被定义,对这些属性的调用最后都是调用__set和__get方法。常见的使用方法是:

    public function __get($name){	$getter='get'.$name;	if(method_exists($this,$getter))return $this->$getter();}

    最后对这些未定义属性的方法都转换为get/set函数的访问。

    楼主,我也在找这个问题的答案,回复的几位兄台确实没明白楼主的意思。

    没google到答案,我个人的理解,这是给IDE看的,
    @property关键字作为转义,IDE遇到这类注释,自动为其加入属性列表(即使它不存在,你可以按这个格式添加一个不存在的属性试试)。

    目的是为一些魔术属性变得显式,让调用的开发者更清楚,当然,需要IDE的支持

    恩,我觉得你说的有道理,这种属性必须在使用的时候要先赋值,如果没有赋值会警告的。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:一个iframe实现长轮询,通过PHP查询数据库并用JS更新页面内容的程序,问题是并不是每一条MYSQL的INSERT消息都能显示到页面,求帮忙分析下哪里有问题 下一篇:php curl https ssl 证书问题
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 整理总结nginx、php-fpm和mysql等的权限划分• 哪位高手有php手册 • 小弟我有关于Linux的有关问题 • 请教上面的是什么数据格式?用PHP如何避免?多谢 • php中require跟include的几点区别
    1/1

    PHP中文网