初识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 相关文章推荐
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
php学习 字符串课件
Jun 15 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
php实现cookie加密的方法
Mar 10 PHP
php实现源代码加密的方法
Jul 11 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
PHP环形链表实现方法示例
Sep 15 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 PHP
PHP中关于php.ini参数优化详解
Feb 28 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
PHP令牌 Token改进版
2008/07/18 PHP
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
PHP反射API示例分享
2016/10/08 PHP
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
2014/05/04 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
原生js实现日期联动
2015/01/12 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
Python编程之Re模块下的函数介绍
2017/10/28 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
python使用递归的方式建立二叉树
2019/07/03 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
学雷锋演讲稿
2014/03/04 职场文书
企业安全生产责任书
2014/04/14 职场文书
公民授权委托书范本
2014/09/17 职场文书
刑事代理授权委托书
2014/09/17 职场文书
python状态机transitions库详解
2021/06/02 Python
php双向队列实例讲解
2021/11/17 PHP