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

MEM*_*MEM 1 yii

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

在我的布局上我有这个:

<div id="main-content" class="<?= $this->getMainClass(); ?>">
Run Code Online (Sandbox Code Playgroud)

在组件>控制器类我有这个:

 private $_mainCssClass;

    public function setMainCssClass($className) {

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

    public function getMainCssClass() {
     return $this->_mainClass;
    }
Run Code Online (Sandbox Code Playgroud)

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

$this->MainCssClass;
Run Code Online (Sandbox Code Playgroud)

同样如下: $this->getMainCssClass()

这是为什么 ?

Mic*_*rtl 5

您不访问私有_mainCssClass,而是访问getMainCssClass()哪个是公共方法.所以你可以从外面调用这个方法,你也可以访问mainCssClass(这只是一个简写getMainCssClass()).

getMainCssClass()允许您访问同一类中的任何私有变量.没有限制你无法返回私有变量的值.