繁体   English   中英

为什么Yii允许我使用$ this-> property访问私有的$ this-> _ property?

[英]Why does Yii allow me to access the private $this->_property, with $this->property?

我不确定这里发生了什么,也许有人知道:

在我的布局上,我有:

<div id="main-content" class="<?= $this->getMainClass(); ?>">

在components> controller类上,我有这个:

 private $_mainCssClass;

    public function setMainCssClass($className) {

     if (is_string($className)) {
        $this->_mainCssClass = $className;
     } else {
        quickDump($className);
     }
    }

    public function getMainCssClass() {
     return $this->_mainClass;
    }

我没有得到的是,尽管事实上我们正在使用访问器,并且mainCssClass属性具有下划线并且被声明为私有,但是我可以通过它访问它:

$this->MainCssClass;

与以下内容相同: $this->getMainCssClass()

这是为什么 ?

您不访问私有的_mainCssClass而是访问getMainCssClass()这是一个公共方法。 因此,您可以从外部调用此方法,还可以访问mainCssClass (这只是getMainCssClass()的简写)。

并且可以从getMainCssClass()访问同一类内的任何私有变量。 没有限制,您不能返回私有变量的值。

它只是一种较短的语法,更便于阅读和编写。

有关详细信息,请参见《 Yii框架指南》 ;有关“魔术”的一些印象,请参见源代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM