Joomla源代码解析(二十) MVC组件的执行
以前的文章中,我们曾经说过 $mainframework->dispatch 是如何最终调用组件的,通过这个dispatch,最终 include 相应组件目录下的 组件名称.php 文件,现在我们来看看,这个文件是怎么按部就班的联系了MVC模式相关的各个文件。
require_once (JPATH_COMPONENT.DS.'controller.php');
// Require specific controller if requested
if($controller = JRequest::getVar('controller')) {
require_once (JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php');
}
// Create the controller
$classname = 'HelloController'.$controller;
$controller = new $classname( );
// Perform the Request task
$controller->execute( JRequest::getVar('task'));
// Redirect if set by the controller
$controller->redirect();
其实就是根据request提交的controller参数,创建相应的JController对象,然后由controoler对象执行相应的任务。
这样我们就完全理解了,一个组件是如何被调用,MVC组件是如何执行,并最后返回html代码的。