初识ThinkPHP控制器


Posted in PHP onApril 07, 2016

本文的重点讲解的ThinkPHP控制器的定义、基本操作内容,希望大家可以对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<br>";
  }

  public function index(){
    echo "index<br>";
  }

  public function _after_index(){
    echo "index.after<br>";
  }
}

配置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的优化。

初识ThinkPHP控制器

上图所示,当访问:

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程序设计有所帮助。

PHP 相关文章推荐
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
php面向对象全攻略 (七) 继承性
Sep 30 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
PHP邮箱验证示例教程
Jun 01 PHP
php生成无限栏目树
Mar 16 PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
php 可变函数使用小结
Jun 12 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 PHP
PHP中PDO的事务处理分析
Apr 07 #PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 #PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 #PHP
PHP的PDO常用类库实例分析
Apr 07 #PHP
PHP安全下载文件的方法
Apr 07 #PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 #PHP
PHP使用token防止表单重复提交的方法
Apr 07 #PHP
You might like
基于文本的留言簿
2006/10/09 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
jQuery 对象中的类数组操作
2009/04/27 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
js获取一组日期中最近连续的天数
2017/05/25 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
Python实现类的创建与使用方法示例
2017/07/25 Python
python生成excel的实例代码
2017/11/08 Python
python实现换位加密算法的示例
2018/10/14 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
解析python的局部变量和全局变量
2019/08/15 Python
python selenium循环登陆网站的实现
2019/11/04 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
Python编写万花尺图案实例
2021/01/03 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
劳动模范事迹材料
2014/01/19 职场文书
村委会换届选举方案
2014/05/03 职场文书
科技工作者先进事迹
2014/08/16 职场文书
赔偿协议书范本
2014/09/12 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
人民检察院起诉书
2015/05/20 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
Python编程编写完善的命令行工具
2021/09/15 Python