TP框架 多级控制器,多层控制器

多级控制器

多级控制器是指控制器可以通过子目录把某个控制器层分组存放,首先需要设置控制器的分级层次,例如,我们设置2级目录的控制器层:

  1. 'CONTROLLER_LEVEL' => 2,

控制器文件的位置放置如下:

  1. ├─Controller 访问控制器
  2. ├─User User分级(组)
  3. ├─UserTypeController.class.php
  4. ├─UserAuthController.class.php
  5. ...
  6. ├─Admin Admin分级(组)
  7. ├─UserController.class.php
  8. ├─ConfigController.class.php
  9. ...

多级控制器中的命名空间需要这样定义:

  1. <?php
  2. namespace HomeControllerAdmin;
  3. use ThinkController;
  4. class IndexController extends Controller {
  5. public function hello(){
  6. echo 'hello';
  7. }
  8. public function test(){
  9. echo 'test';
  10. }
  11. }

然后就可以通过URL地址访问:

  1. http://serverName/Home/User/UserType
  2. http://serverName/Home/Admin/User

多层控制器

ThinkPHP的控制器支持多层和多级,多层指的是控制器可以分层,例如除了默认的Controller控制器层(我们可以称之为访问控制器),还可以添加事件控制器(层),例如:

  1. ├─Controller 访问控制器
  2. ├─UserController.class.php
  3. ├─BlogController.class.php
  4. ...
  5. ├─Event 事件控制器
  6. ├─UserEvent.class.php
  7. ├─BlogEvent.class.php
  8. ...

访问控制器的名称是通过DEFAULT_C_LAYER设置的,默认是Controller。

访问控制器负责外部交互响应,通过URL请求响应,例如 http://serverName/Home/User/index,而事件控制器负责内部的事件响应,并且只能在内部调用,所以是和外部隔离的。

多层控制器的划分可以根据项目的需要自由分层。

如果是定义其他的控制器层,则不一定必须要继承系统的Controller类或其子类,通常需要输出模版的时候才需要继承Controller类。例如:

  1. <?php
  2. namespace HomeEvent;
  3. class UserEvent {
  4. public function login(){
  5. echo 'login event';
  6. }
  7. public function logout(){
  8. echo 'logout event';
  9. }
  10. }

UserEvent事件控制器位于 Home/Event/UserEvent.class.php 。

wahaha每天学习一点点
原文地址:https://www.cnblogs.com/liuzhaobo1999/p/7440030.html