初识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和XSL stylesheets转换XML文档
Oct 09 PHP
PHP面向对象编程快速入门
Oct 09 PHP
玩转虚拟域名◎+ .
Oct 09 PHP
非常好的php目录导航文件代码
Oct 09 PHP
PHP日期时间函数的高级应用技巧
May 16 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 PHP
php curl优化下载微信头像的方法总结
Sep 07 PHP
PHP token验证生成原理实例分析
Jun 05 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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恢复数组的key为数字序列的方法
2015/04/28 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python单例模式的两种实现方法
2017/08/14 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
python如何使用腾讯云发送短信
2020/09/17 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
高考自主招生自荐信
2013/10/20 职场文书
教师应聘个人求职信
2013/12/10 职场文书
社区清明节活动总结
2014/07/04 职场文书
环境日宣传活动总结
2014/07/09 职场文书
民事辩护词范文
2015/05/21 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang