以前的文章中,我們曾經說過 $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代碼的。