为什么Yii允许我使用$ this->属性访问私有$ this-> _property?

时间:2013-04-16 16:38:50

标签: yii

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

在我的布局上我有这个:

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

在组件&gt;控制器类上我有这个:

 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()

相同

为什么?

2 个答案:

答案 0 :(得分:5)

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

getMainCssClass()开始,您可以访问同一个类中的任何私有变量。没有限制你无法返回私有变量的值。

答案 1 :(得分:2)

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

有关详细信息,请参阅Yii Framework Guide;有关“魔法”的一些印象,请参阅source code