ecstore源碼學習之五 網站首頁運行軌跡

2015-12-16 15:41:00
hainuo
原創 1804
摘要: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']); }```至此,底層的一些邏輯已經講述清楚瞭。下一篇將講述控製器尋址問題。
發錶評論
伍 乘 拾 =
評論通過審核後顯示。