CakePHP:为什么他们在第一个括号 () 中使用 className?
CakePHP : Why they use className with first brackates ()?
我使用了cakephp 方法来更改布局。它看起来像
$this->viewBuilder()->setLayout('admin');
我见过 viewBuilder Class,他们没有使用任何结构。那么对于调用方法 setLayout
为什么我需要像 viewBuilder()
这样使用 className。一开始以为是嵌套方法,其实不是
查看 cake.org, you can see that method(not class) viewBuilder()
is defined in trait ViewVarsTrait
处的 API 和 returns 一个 ViewBuilder
对象(即获取正在使用的视图生成器)。
此 ViewBuilder
对象可以访问方法 setLayout()
。
这就是您使用的原因:$this->viewBuilder()->setLayout('admin');
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: }
...
注意:有关 traits 是什么以及如何使用它们的更多信息。
我使用了cakephp 方法来更改布局。它看起来像
$this->viewBuilder()->setLayout('admin');
我见过 viewBuilder Class,他们没有使用任何结构。那么对于调用方法 setLayout
为什么我需要像 viewBuilder()
这样使用 className。一开始以为是嵌套方法,其实不是
查看 cake.org, you can see that method(not class) viewBuilder()
is defined in trait ViewVarsTrait
处的 API 和 returns 一个 ViewBuilder
对象(即获取正在使用的视图生成器)。
此 ViewBuilder
对象可以访问方法 setLayout()
。
这就是您使用的原因:$this->viewBuilder()->setLayout('admin');
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: }
...
注意:有关 traits 是什么以及如何使用它们的更多信息。