当用户访问网页时,系统载入唯一入口页面index。
如果这个入口页面中定义了 _PS_ADMIN_DIR_常量,
则为后台入口,
否则,在url中get参数fc的值为module,
则为前台模块,
否则是前台入口。
并设置以下2个变量
$this->front_controller const FC_FRONT = 1; 前台
const FC_ADMIN = 2; 后台
const FC_MODULE = 3;前台模块
const FC_MERCHANT = 4; 商家(这个是后加的,不在标准版中)
$this->controller_not_found 控制器未找到控制器
============== 构造器__construct分析 end==========
==============调度器dispatch分析 start==============
得到请求的控制器$this->getController();
打开对应的控制器开关switch ($this->front_controller)
设置控制器的hook参数数组
$params_hook_action_dispatcher = array('controller_type' => self::FC_FRONT, 'controller_class' => $controller_class, 'is_module' => 1);
数组中包含3个参数
controller_type (控制器类型) const FC_FRONT = 1; 前台
const FC_ADMIN = 2; 后台
const FC_MODULE = 3;前台模块
const FC_MERCHANT = 4; 商家(这个是后加的,不在标准版中)
controller_class (控制器类)
is_module (是否为模块) $tab->module(这个变量只有后台有)
调度器执行hook
Hook::exec('actionDispatcher', $params_hook_action_dispatcher);
调度器执行用户申请的页面的控制器
$controller->run();
=================调度器dispatch分析 end==============
转载于:https://my.oschina.net/u/2615982/blog/608572