为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕斯709654 2022-07-22 15:56:35
我使用 cakephp 方法来更改布局。这里看起来像$this->viewBuilder()->setLayout('admin');我见过viewBuilder Class,他们没有使用任何构造。那么对于调用方法setLayout,为什么我需要使用 className like viewBuilder()。起初我以为这是一种嵌套方法,但事实并非如此。
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

查看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:     }

     ...

注意:有关什么是特征以及如何使用它们的更多信息。


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信