ecstore源碼學習之五 路由和控製器尋址

2015-12-17 09:24:00
hainuo
原創 1938
摘要:ecstore站點路由和尋址
我們在上一節知道瞭`kernel::boot()`最後調用瞭路由那麽本章我們就來看看路由解析和控製器尋址。#router.php 路由1. 關鍵在於`dispatch()`方法,因爲`kernel::boot()`最後調用瞭`dispatch()`方法。 1. `$app`在`kernel::boot()`中定義好瞭與`mapper.php`中定義的數據對應下得到當前的app爲`site` 1. 在`dispatch()`方法中可以看到默認的`controller`爲`default`,`action`默認爲`index` 1. 於是我們知道瞭執行控製器和方法`site_ctl_default::index()` #方法尋址 1. 首先是在`kernel::boot()`一開始就加載一箇`app/base/autoload.php`,這就是一箇尋址工具。 1. 這裡分爲 `ctl_`,`mdl_`,`default`。通過命名就可以看到 三箇分彆是`控製器`,`模型`,`類庫` 1. `ctl_`的處理方式 [A1]錶示模塊名,[A2]錶示控製器名 1. 如果沒有自定義控製器那麽控製器的位置就在`app/[A1]/controller/[A2].php` 1. 如果自定義瞭控製器那麽控製器的位置在`[自定義目録]/[A1]/controller/[A2].php` 1. `mdl`的處理方式 [A1]錶示模塊名,[A2]錶示模型名稱,[A3]錶示父級模型名稱,[A4]錶示默認模型名稱 1. 未自定義的模型,模型位置在`app/[A1]/model/[A2].php` 1. 自定義的模型,`[自定義目録]/[A1]/model/[A2].php` 1. 以上都沒有,如果存在`app/[A1]/dbschema/[A2].php`那麽就調用`app::get($owner)->get_parent_model_class();`方法來穫取模型 這裡不再贅述 一般默認模型爲`app/base/lib/db/model. php` 1. 類庫的載人 [A1]模塊名稱[A2]類庫名稱(其中可能帶有目録) 1. base模塊下的lib,是默認的公共類庫 `app/base/lib/[A2].php` 1. 各模塊下的lib `app/[A1]/lib/[A2].php` 1. 自定義模塊下的lib`[自定義目録]/[A1]/lib/[A2].php` 1. 靜態類庫 `app/base/lib/static/[A2].php` 1. 自定義靜態類庫 `[自定義目録]/base/lib/static/[A2].php` 尋址就是以上瞭,基本上按照類名來以`_`分割
發錶評論
陸 乘 壹 =
評論通過審核後顯示。