有时候,为了调用上的方便,我们需要使用requestAction。
它是CakePHP提供的,实现了无论当前请求在哪里,都能够任意调用的一个简便方法。这在某种程度上违背了MVC的设计理念,但是,为了追求灵活性,CakePHP在后续
版本中一直保留了这个特性,并做出了一定的改进。
经过查看,我得知,
requestAction是对象类Object中的一个公有方法,是CakePHP中所有其他类的父类,这便能
理解为什么它可以在任意位置被访问到了。
但在使用中,我
发现requestAction十分耗费资源,效率极差。
在requestAction中最终返回值为:
$dispatcher->dispatch($url, $params);
类Dispatcher是CakePHP中的主要的负责关联路由分发逻辑控制的类,它的一些参数的设定直接影响着最终的执行方式。
url:将要要请求的路径,Dispatcher从这里转发逻辑
return:是否返回视图
bare:布尔值,在layout之前判断布局器
layout:是否返回布局器
关于return的保守代码:
if (array_key_exists('return', $this->params) && $this->params['return'] == 1) {
$controller->autoRender = false;
}
如非需要,我不建议去使用requestAction。