CakePHP开发之调用控制器方法requestAction


有时候,为了调用上的方便,我们需要使用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。

你可能感兴趣的:(mvc,PHP,cakephp)