控制器

控制器名称空间前缀统一为 "{$APPLICATION_DIR}\Controller ,所有的控制器都应继承Core\AbstraceInterface\AbstractController。

控制器抽象类

抽象函数

1、 onRequest

当一个URL请求进来,能够被映射到控制器且做完actionName解析后,将立马执行OnRequest事件,以便对请求做预处理,如权限过滤等。注意,该事件与Conf/Event下的onRequest事件并不冲突(Conf/Event优先级最高)。

2、 index

为控制器中默认存在方法,当在URL中无法解析出actionName时,将默认执行该方法。例如有一个Test控制器,当访问domain/test路径时,则默认解析为index。

3、actionNotFount

当在URL中解析出actionName,而在控制器中无存在对应方法(函数)时,则执行该方法。例如有一个Test控制器,当访问domain/test/test1/index.html路径时,actionName会被解析为test1,而此时若控制器中无test1方法时,则执行actionNotFount。

4、afterResponse

在任何的控制器响应结束后,均会执行该事件,该事件预留于做分析记录。注意,该事件与Conf/Event下的afterResponse事件并不冲突(Conf/Event优先级最高)。

实体函数

1、actionName

当一个URL请求进来,能够被映射到控制器时,那么将从该URL中解析出对应的行为名称,若无则默认为index。在控制器内的任意位置调用$this->actionName()均能获得当前行为名称。

2、request

返回当前请求对象,包含了完整的请求信息。

3、response

返回当前相应对象。

注意:Request与Response对象在接受到用户请求时自动创建,响应结束后自动销毁。

URL访问规则

仅支持 pathInfo 模式的 URL,且与控制器名称(方法)保持一致,控制器搜索规则为优先完整匹配。

例如访http://domain/api/index.html 则默认尝试优先搜索 App\Controller\Api\Index 控制器, 若无对应控制器则尝试搜索,App\Controller\Api 控制器,以上actionName均为 index ,再若无则尝试搜索 App\Controller\Index 控制器,而此时,

actionName 则为 api 。具体示例代码请看 example /conrollerUsage\_01下面的代码,跑一遍便知。

results matching ""

    No results matching ""