专栏首页cwl_JavaPHP-TP框架中的控制器

PHP-TP框架中的控制器

四、TP框架中的控制器

1、控制器的后缀

打开配置文件application/config.php,有如下配置

'controller_suffix' => false,

表示默认情况下,控制器无特殊后缀。例如 Index控制器,文件名为Index.php

如果需要进行设置,可以设置为(我们不需要这么设置)

'controller_suffix' => 'Controller',

表示控制器以Controller为后缀。例如Index控制器,文件名为IndexController.php

2、控制器的定义

(见手册–控制器–控制器定义)

1)定义位置及命名规则

定义位置:application/模块目录/controller/目录下

命名规则:控制器名称(首字母大写) + (控制器后缀,默认没有) + .php

默认:Index控制器 Index.php

User控制器 User.php

Test控制器 Test.php

示例:

2)编写控制器

①声明命名空间 namespace app\模块目录名\controller

②引入控制器基类(可选) use think\Controller; think是命名空间 Controller是基类控制器

③定义当前控制器类,继承控制器基类(可选)

示例:定义测试控制器Test.php

3、框架中的命名空间

命名空间本身是PHP就有的,用来防止命名冲突问题的。

TP框架中的命名空间,通常和目录挂钩。

原因:TP中的自动加载机制,会将类的命名空间作为加载路径的一部分。

TP中命名空间使用:

①声明命名空间 使用namespace关键字

②引入指定的类 使用use关键字 命名空间\类名称

③完全限定式访问 在使用类时,\完整命名空间\类名称(继承和实例化)

如果一个类没有命名空间,使用 \类名

4、url访问

(见手册–架构–URL访问)

ThinkPHP5.0框架中,默认使用PATH_INFO方式的url进行访问。

示例:http://www.tpshop.com/index.php/Index/Test/index/page/10

格式:http://域名/入口文件/模块名/控制器名称/操作方法名称/参数名/参数值

隐藏入口文件写法:http://域名/模块名/控制器名称/操作方法名称/参数名/参数值

需要对apache进行设置(手册–架构–URL访问、手册–部署–URL重写)

使用PHPStudy需要将 public目录的.htaccess文件中,index.php后面加上?

使用Apapche的重写机制隐藏入口文件后,如果在整个url后面加上.html后缀, 让整个url看起来像是访问的静态页面。这叫做“伪静态”。

5、调试模式

(见手册–错误与调试–调试模式)

默认情况下,如果代码有误(比如控制器名拼写有误),会出现以下错误:

错误描述比较模糊,不方便进行错误调试。这种模式通常叫做“部署模式”(生产模式)。

开发阶段可以将框架设置为调试模式,便于进行错误调试:

修改 项目目录\application目录\config.php

开启调试模式后,报错信息格式如下:

会提示详细错误信息 和 错误位置(参考位置)。

相对于 线上环境(开发完成后的阶段),叫做 部署模式或者生产模式。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java工具集-断言校验工具

    cwl_java
  • PHP-TP命令行创建模块目录及文件

    比如:创建test模块目录,执行命令 php think build --module test即可。(模块名小写)

    cwl_java
  • PHP-ThinkPHP将后台模板与框架做结合

    商品列表 Goods控制器index方法 goods_list.html -> index.html

    cwl_java
  • 如何提高SDN可拓展性

    Software Defined Networking是一种控制平面和数据平面分离的可编程的网络架构,目前已经有许多商业落地案例。在部署SDN时,往往会因SDN...

    SDNLAB
  • VR开发--SteamVR框架工具(1):VRTK

    1、GitHub远程仓库: git clone https://github.com/thestonefox/SteamVR_Unity_Toolkit 2...

    雷潮
  • iOS多控制器之UINavigationController&UITableBarController1. 多控制器2. UINavigationController3. UITableBarCont

    stanbai
  • Jmeter(四)_16个逻辑控制器详解

    1、 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers a...

    飞天小子
  • 【JMeter-4】JMeter元件详解之逻辑控制器

    文章内容是参照Jmeter官网和自己实践完成的,JMeter官网地址贴上,有兴趣的朋友可以去阅读一下:JMeter官网

    云深i不知处
  • JMeter逻辑控制器08

    前言 在jmeter中逻辑控制器主要分类两类: 控制jmeter测试计划中节点的逻辑执行顺序等等 对jmeter的节点进行分组,方便结果统计等等 进一步简化下,...

    苦叶子
  • kubernetes从懵圈到熟练 – 理解集群控制器

    当我们尝试去理解K8S集群工作原理的时候,控制器肯定是一个难点。这是因为控制器有很多,具体实现大相径庭;且控制器的实现用到了一些较为晦涩的机制,不易理解。但是,...

    kubernetes中文社区

扫码关注云+社区

领取腾讯云代金券