初识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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
PHP4实际应用经验篇(8)
Oct 09 PHP
discuz安全提问算法
Jun 06 PHP
PHP生成条形图的方法
Dec 10 PHP
PHP多线程之内部多线程实例分析
Mar 09 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
php生出随机字符串
Jul 06 PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
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
mysql 搜索之简单应用
2007/04/27 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
纯php生成随机密码
2015/10/30 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
flask-restful使用总结
2018/12/04 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
股东出资证明书范例
2014/10/04 职场文书
争先创优个人总结
2015/03/04 职场文书
廉洁自律证明
2015/06/24 职场文书
关于环保的宣传稿
2015/07/23 职场文书
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js