ecstore源码学习之五 网站首页运行轨迹

2015-12-16 15:41:00
hainuo
原创 1803
摘要:ecstore 运行逻辑 文件执行或者加载顺序。
1. 根目录`index.php` 1. 引入`app/base/kernel.php` 1. 自动引入加密过的ego文件 1. 自动根据用户访问数据引入desktop(管理员)、site(pc端)或者wap(手机端)的例子 1. 这些ego文件大部分是方法,最外层的ego是一个类,这些ego文件都经过加密是商派的核心代码,内部逻辑不透露,在以后遇到时会讲它的作用,但是不讲实现方式。 1. kernel::boot(); 开启一系列解析程序包括执行1. kernel::boot()方法执行逻辑 1. 加载路由文件 `config/maper.php` 内部定义了路由数组`$url_app_map` 比如我们访问后台为什么使用`shopadmin`而不是`desktop`原因就在这里 1. 加载`config/config.php` 系统配置项,在程序未安装之前是不存在的,安装成功后存在这个项目。 1. 加载 `app/base/defined.php` 这个就是你的服务器与商派的服务器交互的基础,如果删掉内容,系统很可能跑不起来;另外这里面还保存着一些系统配置项目,在系统配置项目`config/config.php`不存在或者未定义某些配置项时就来定义默认值。 1. 获取`pathinfo`并对`pathinfo`进行处理,得到`index.php/[A1]/[A2]/[paragram]`中的`[A1]`部分。 1. 对`[A1]`部分进行判断,这里放代码比较清楚点 ```php if($part=='/api'){ return kernel::single('base_rpc_service')->process($pathinfo); }elseif($part=='/openapi'){ return kernel::single('base_rpc_service')->process($pathinfo); }elseif($part=='/app-doc'){ //cachemgr::init(); return kernel::single('base_misc_doc')->display($pathinfo); }``` 1. 对于`config/maper. php`中的路由呢,是怎么处理的?判断`[A1]`是否在之前的引入的路由数组`$url_app_map`数组中。可以通过下面的代码看到,不是的时候执行站点首页``` if(isset(self::$url_app_map[$part])){ if($jump){ $request_uri = self::request()->get_request_uri(); $urlinfo = parse_url($request_uri); $query = $urlinfo['query']?'?'.$urlinfo['query']:''; header('Location: '.$urlinfo['path'].'/'.$query); exit; }else{ $app = self::$url_app_map[$part]['app']; $prefix_len = strlen($part)+1; kernel::set_lang(self::$url_app_map[$part]['lang']); } }else{ $app = self::$url_app_map['/']['app']; $prefix_len = 1; kernel::set_lang(self::$url_app_map['/']['lang']); }```至此,底层的一些逻辑已经讲述清楚了。下一篇将讲述控制器寻址问题。
发表评论
壹 乘 肆 =
评论通过审核后显示。