zoukankan      html  css  js  c++  java
  • Thinkphp控制器,1.多层控制器2.多级控制器

    1.多层控制器

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

    ├─Controller 访问控制器
         ├─UserController.class.php 
         ├─BlogController.class.php
    
    ├─Event 事件控制器
         ├─UserEvent.class.php  
         ├─BlogEvent.class.php

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

    访问控制器负责外部交互响应,通过URL请求响应,

    事件控制器负责内部的事件响应,并且只能在内部调用,所以是和外部隔离的。

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

    UserEvent.class.php

    <?php
    namespace HomeEvent;
    class UserEvent {  
      public function login(){    
        echo 'login event';    
    }   
     public function logout(){      
      echo 'logout event';   
     }
    }

    UserController.class.php

    <?php
    namespace HomeController;
    use ThinkController;
    use HomeEventUserEvent;//记得要加上
    class UserController extends Controller{
            public function index($id=1){
            
                public function test(){
                    $userEvent=new UserEvent();
                    $userEvent->login();//调用UserEvent.class.php里的login方法;
                    echo "ceshi";
                    }
                        }

    因为操作方法就是控制器的一个方法,所以遇到有和系统的关键字冲突的方法可能就不能定义了,这个时候我们可以设置操作方法的后缀来解决,例如:

    在相应的config.php里面添加配置

    'ACTION_SUFFIX'         =>  'Action', // 操作方法后缀

    设置操作方法的后缀为Action,这样,控制器的操作方法定义调整为:

    <?php
    namespace HomeController;
    use ThinkController;
    class IndexController extends Controller {   
         public function listAction(){      
              echo 'list';   
         }    
        public function helloAction(){       
             echo 'hello';   
         }   
         public function testAction(){        
            echo 'test';  
          }
    }            

     

    多级控制器

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

    在相应的config.php里面添加配置

    'CONTROLLER_LEVEL'      =>  2,//允许二级控制器

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

    Controller 访问控制器  
        ├─User User分级(组)  
              ├─UserTypeController.class.php   
              ├─UserAuthController.class.php
     
         ├─Admin Admin分级(组)
              ├─UserController.class.php 
              ├─ConfigController.class.php                 

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

    <?php
    namespace HomeControllerAdmin;
    use ThinkController;
    class IndexController extends Controller {   
         public function hello(){   
             echo 'hello';   
     }   
         public function test(){   
             echo 'test';   
     }
    }

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

    http://serverName/Home/User/UserType
    
    http://serverName/Home/Admin/User
  • 相关阅读:
    VS2010/MFC编程入门之四(MFC应用程序框架分析)
    VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)
    shell脚本学习一
    docker安装rabbitmq
    docker安装activemq
    docker搭建数据库主从复制
    在docker容器中安装vim命令进行编辑文件
    docker的常用操作
    docker上安装eslaticsearch
    centos7上面关闭防火墙
  • 原文地址:https://www.cnblogs.com/zxl89/p/6230164.html
Copyright © 2011-2022 走看看