CakePHP:为什么他们使用带有第一个括号()的className?

我使用 cakephp 方法来更改布局。这里看起来像

$this->viewBuilder()->setLayout('admin');

我见过viewBuilder Class,他们没有使用任何构造。那么对于调用方法setLayout,为什么我需要使用 className like viewBuilder()。起初我以为这是一种嵌套方法,但事实并非如此。


慕斯709654
浏览 89回答 1
1回答

至尊宝的传说

查看cake.org上的 API ,您可以看到方法(而不是类)viewBuilder()在 trait 中定义ViewVarsTrait并返回一个ViewBuilder对象(即让您获得正在使用的视图构建器)。这个ViewBuilder对象可以访问方法setLayout()。这就是您使用的原因:$this->viewBuilder()->setLayout('admin');来自cakephp.org 的源代码 26: trait ViewVarsTrait 27: {     .../** 52:      * Get the view builder being used. 53:      * 54:      * @return \Cake\View\ViewBuilder 55:      */ 56:     public function viewBuilder() 57:     { 58:         if (!isset($this->_viewBuilder)) { 59:             $this->_viewBuilder = new ViewBuilder(); 60:         } 61:  62:         return $this->_viewBuilder; 63:     }     ...注意:有关什么是特征以及如何使用它们的更多信息。
打开App,查看更多内容
随时随地看视频慕课网APP