我不确定这里发生了什么,也许有人有线索:
在我的布局上我有这个:
<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()
为什么?
答案 0 :(得分:5)
您不访问私有_mainCssClass
,而是getMainCssClass()
这是一种公共方法。因此,您可以从外部调用此方法,也可以访问mainCssClass
(这只是getMainCssClass()
的简写)。
从getMainCssClass()
开始,您可以访问同一个类中的任何私有变量。没有限制你无法返回私有变量的值。
答案 1 :(得分:2)
它只是一种更短的语法,更便于读写。
有关详细信息,请参阅Yii Framework Guide;有关“魔法”的一些印象,请参阅source code。