初识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 相关文章推荐
在windows iis5下安装php4.0+mysql之我见
Oct 09 PHP
一个取得文件扩展名的函数
Oct 09 PHP
php垃圾代码优化操作代码
Aug 05 PHP
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
Jun 16 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
你不知道的文件上传漏洞php代码分析
Sep 29 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
laravel添加角色和模糊搜索功能的实现代码
Jun 22 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删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
jquery 插件开发方法小结
2009/10/23 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
在vue中获取dom元素内容的方法
2017/07/10 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
Python字符转换
2008/09/06 Python
Python编程中time模块的一些关键用法解析
2016/01/19 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
函授本科毕业自我鉴定
2013/10/09 职场文书
大学生四年生活自我鉴定
2013/11/21 职场文书
语文教育专业应届生求职信
2013/11/23 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
绿里奇迹观后感
2015/06/15 职场文书
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB
python数字图像处理实现图像的形变与缩放
2022/06/28 Python