初识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版(5)
Oct 09 PHP
php下检测字符串是否是utf8编码的代码
Jun 28 PHP
php中的一些数组排序方法分享
Jul 20 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
Jul 05 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
destoon复制新模块的方法
Jun 21 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
php实现表单提交上传文件功能
May 28 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
php 代码优化的42条建议 推荐
2009/09/25 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
php实现cookie加密的方法
2015/03/10 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
javascript 常用功能总结
2012/03/18 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
python logging日志模块的详解
2017/10/29 Python
python书籍信息爬虫实例
2018/03/19 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
Django配置跨域并开发测试接口
2020/11/04 Python
应届毕业生通用的自荐书范文
2014/02/07 职场文书
征婚广告词
2014/03/17 职场文书
党员志愿者活动总结
2014/06/26 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
我的1919观后感
2015/06/03 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
社会实践心得体会范文
2016/01/14 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
Python 内置函数速查表一览
2021/06/02 Python