ThinkPHP3的控制器支持多层和多级,多层指的是控制器可以分层,例如除了默认的Controller控制器层(我们可以称之为访问控制器),还可以添加事件控制器(层),例如:
├─Controller 访问控制器 │ ├─UserController.class.php │ ├─BlogController.class.php │ ...├─Event 事件控制器 │ ├─UserEvent.class.php │ ├─BlogEvent.class.php │ ...
访问控制器的名称是通过DEFAULT_C_LAYER设置的,默认是Controller。
访问控制器负责外部交互响应,通过URL请求响应,例如 http://serverName/Home/User/index
,而事件控制器负责内部的事件响应,并且只能在内部调用,所以是和外部隔离的。
多层控制器的划分可以根据项目的需要自由分层。
如果是定义其他的控制器层,则不一定必须要继承系统的Controller类或其子类,通常需要输出模版的时候才需要继承Controller类。例如:
<?php namespace Home\Event;class UserEvent { public function login(){ echo 'login event'; } public function logout(){ echo 'logout event'; } }
UserEvent事件控制器位于 Home/Event/UserEvent.class.php
。