为什么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(我实际测试了它,并看到了这种情况)。再次感谢。