初识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 默默经典版本
Aug 04 PHP
php下连接mssql2005的代码
Jan 17 PHP
基于php split()函数的用法详解
Jun 05 PHP
解析PHP工厂模式的好处
Jun 18 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
CI框架常用方法小结
May 17 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
php数据序列化测试实例详解
Aug 12 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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 STRING 陷阱原理说明
2010/07/24 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php实现webservice实例
2014/11/06 PHP
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
python中的字符串内部换行方法
2018/07/19 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
python 实现生成均匀分布的点
2019/12/05 Python
python turtle 绘制太极图的实例
2019/12/18 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
学生打架检讨书大全
2014/01/23 职场文书
网站美工岗位职责
2014/04/02 职场文书
诚信考试倡议书
2014/04/15 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
储备店长岗位职责
2015/04/14 职场文书
暑期辅导班宣传单
2015/07/14 职场文书