初识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 相关文章推荐
无限级别菜单的实现
Oct 09 PHP
提升PHP执行速度全攻略(上)
Oct 09 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
php简单防盗链实现方法
Jul 29 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
在php的yii2框架中整合hbase库的方法
Sep 20 PHP
浅析PHP7 的垃圾回收机制
Sep 06 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 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+MySql编写聊天室
2006/10/09 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
jQuery textarea的长度进行验证
2009/05/06 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
详解 Python 读写XML文件的实例
2017/08/02 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python DataFrame 取差集实例
2019/01/30 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
python生成并处理uuid的实现方式
2020/03/03 Python
校园十佳歌手策划书
2014/01/22 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
报到证办理个人委托书
2014/10/06 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
应届毕业生自荐信
2015/03/04 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
2015年新教师工作总结
2015/04/28 职场文书
人工作失职检讨书
2015/05/05 职场文书
校园开放日新闻稿
2015/07/17 职场文书
详解JS数组方法
2021/11/20 Javascript
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫