初识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
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
php的dl函数用法实例
Nov 06 PHP
php格式化日期实例分析
Nov 12 PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 PHP
Yii中实现处理前后台登录的新方法
Dec 28 PHP
php编程每天必学之验证码
Mar 03 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
php array_keys 返回数组的键名
Oct 25 PHP
php实现微信分享朋友链接功能
Feb 18 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 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
第三节 定义一个类 [3]
2006/10/09 PHP
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
React实现todolist功能
2020/12/28 Javascript
解决yum对python依赖版本问题
2019/07/05 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
生产车间标语
2014/06/11 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年村委会工作总结
2014/11/24 职场文书
python删除csv文件的行列
2021/04/06 Python
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL