• 技术文章 >后端开发 >php教程

    初识ThinkPHP控制器_PHP

    2016-05-27 10:34:13原创338
    本文的重点讲解的ThinkPHP控制器的定义、基本操作内容,希望大家可以对ThinkPHP控制器有初步的了解。

    最基本的控制器:

    <?php
    namespace Home\Controller;
    use Think\Controller;
    class IndexController extends Controller {
      public function index(){
    
      }
      public function hello(){
        echo 'hello';
      }
    }
    

    控制器的名称采用驼峰法命名(首字母大写),控制器文件位于 Application/Home/Controller/IndexController.class.php

    IndexController控制器类的hello方法就是操作方法,访问下面的URL地址:

    http://serverName/Home/Index/hello
    就会输出"hello"

    前置和后置操作:

    <?php
    namespace Home\Controller;
    use Think\Controller;
    class IndexController extends Controller {
    
      public function _before_index(){
        echo "index.before
    "; } public function index(){ echo "index
    "; } public function _after_index(){ echo "index.after
    "; } }

    配置ACTION_SUFFIX改变操作方法书写方式:

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

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

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

    空控制器和空操作方法:

    空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。

    上图所示,当访问:

    http://serverName/index.php/Home/City/beijing/
    由于City控制器并没有定义beijing、shanghai或者shenzhen操作方法,因此系统会定位到空操作方法 _empty中去解析,_empty方法的参数就是当前URL里面的操作名,因此会看到依次输出的结果是:

    你是怎么找到我的?

    操作绑定到类: (作用:可以实现为每个操作方法定义一个类,而不是控制器类的一个方法)

    以URL访问为 http://serverName/Home/Index/index为例,

    原来的控制器文件定义位置为:Application/Home/Controller/IndexController.class.php

    控制器类的定义如下:

    namespace Home\Controller;
    use Think\Controller;
    class IndexController extends Controller{
      public function index(){
        echo '执行Index控制器的index操作';
      }
    }
    
    

    可以看到,实际上我们调用的是 Home\Controller\IndexController 类的index方法。

    通过配置文件设置参数

    'ACTION_BIND_CLASS' => True,
    设置后,控制器文件位置改为:Application/Home/Controller/Index/index.class.php

    控制器类的定义如下:

    namespace Home\Controller\Index;
    use Think\Controller;
    class index extends Controller{
      public function run(){
        echo '执行Index控制器的index操作';
      }
    }
    
    

    现在,我们调用的其实是 Home\Controller\Index\index 类的run方法。
    以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:ThinkPHP 控制器
    上一篇:PHP中PDO的事务处理分析_PHP 下一篇:PHP如何将XML转成数组_PHP
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 一文聊聊php5.4的特性【总结】• 详细介绍PHP中时间处理类Carbon的用法• PHP常量两种定义方法:define和const有什么区别• 分享一个neo4j(图形数据库)的PHP库!• PHP实现LRU算法的示例代码
    1/1

    PHP中文网