我不确定这里发生了什么,也许有人有一个线索:
在我的布局上我有这个:
<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()
这是为什么 ?
您不访问私有_mainCssClass,而是访问getMainCssClass()哪个是公共方法.所以你可以从外面调用这个方法,你也可以访问mainCssClass(这只是一个简写getMainCssClass()).
并getMainCssClass()允许您访问同一类中的任何私有变量.没有限制你无法返回私有变量的值.