ecstore源码学习之五 路由和控制器寻址

2015-12-17 09:24:00
hainuo
原创 2128
摘要: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` 寻址就是以上了,基本上按照类名来以`_`分割
发表评论
拾 减 陆 =
评论通过审核后显示。