为什么Yii允许我访问私人$this->_属性,带有$this->;财产?

为什么Yii允许我访问私人$this->_属性,带有$this->;财产?,yii,Yii,我不确定这里发生了什么,也许有人有线索: 在我的布局中,我有以下内容: <div id="main-content" class="<?= $this->getMainClass(); ?>"> private $_mainCssClass; public function setMainCssClass($className) { if (is_string($className)) { $this->_mainCs

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

在我的布局中,我有以下内容:

<div id="main-content" class="<?= $this->getMainClass(); ?>">
 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()


这是为什么?

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


getMainCssClass()
可以访问同一类中的任何私有变量。不存在不能返回私有变量值的限制。

您不访问私有的
\u mainCssClass
,而是访问作为公共方法的
getMainCssClass()
。因此,您可以从外部调用此方法,也可以访问
mainCssClass
(这只是
getMainCssClass()
的缩写)


getMainCssClass()
可以访问同一类中的任何私有变量。不存在不能返回私有变量值的限制。

它只是一种较短的语法,读写更方便


有关“魔力”的详细信息和一些印象,请参见。它只是一种较短的语法,更便于阅读和书写


有关“魔力”的详细信息和一些印象,请参见。非常感谢您的源代码参考。很有趣。我选择声明Michael Hartl作为答案,因为这实际上让我明白,我们不是在访问私有财产,而是在访问getMainCssClass(我实际测试了它,并看到了这种情况)。再次感谢。非常感谢您的源代码参考。很有趣。我选择声明Michael Hartl作为答案,因为这实际上让我明白,我们不是在访问私有财产,而是在访问getMainCssClass(我实际测试了它,并看到了这种情况)。再次感谢。