ThinkPHP之TP5 控制器

TP5 框架控制器

控制器的后缀

  • 打开配置文件application/config.php,有如下配置
    • 'controller_suffix' => false
    • 表示默认情况下,控制器无特殊后缀
    • 例如 Index控制器,文件名为Index.php
    • 如果需要进行设置,可以设置为(我们不需要这么设置)
    • 'controller_suffix' => 'Controller'
    • 表示控制器以Controller为后缀
    • 例如Index控制器,文件名为IndexController.php

控制器的定义

  • 定义位置及命名规则

    • 定义位置:application/模块目录/controller/目录下
    • 命名规则:控制器名称(首字母大写) + (控制器后缀,默认没有) + .php
    • 默认
      • Index控制器 Index.php
      • User控制器 User.php
      • Test控制器 Test.php
  • 编写控制器

    • 声明命名空间 namespace app\模块目录名\controller
    • 引入控制器基类(可选)
      • use think\Controller;
      • think是命名空间 Controller是基类控制器
    • 定义当前控制器类,继承控制器基类(可选)
# 定义测试控制器Test.php
<?php

namespace app\index\controller;

use think\Controller;

class Test extends Controller
{
  public function index()
  {
    echo 'Hello,This is Test Controller';
  }
}
?>

框架中的命名空间

  • 概念

    • 命名空间本身是PHP就有的,用来防止命名冲突问题的
    • TP框架中的命名空间,通常和目录挂钩
      • TP中的自动加载机制,会将类的命名空间作为加载路径的一部分
  • TP中命名空间使用

    • 声明命名空间,使用namespace关键字
    • 引入指定的类,使用use关键字 命名空间\类名称
    • 完全限定式访问,在使用类时,\完整命名空间\类名称(继承和实例化)
    • 如果一个类没有命名空间,使用 \类名

URL访问

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

    • http://域名/入口文件/模块名/控制器名称/操作方法名称/参数名/参数值
    • http://www.tpshop.com/index.php/Index/Test/index/page/10
  • 隐藏入口文件写法

    • 需要对apache进行设置
    • http://域名/模块名/控制器名称/操作方法名称/参数名/参数值
  • URL重写

    • 使用PHPStudy需要将public目录的.htaccess文件中,index.php后面加上?
    • 重写条件(! 取反, d 目录, f 文件)
      • 请求的文件,不是已经存在的目录,也不是已经存在的文件
    • 重写规则
      • 将请求地址(不包含域名),放在index.php后面
      • 这里的重写,只是告诉Apache解析地址,并不会修改浏览器地址栏
<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
  • 伪静态
    • 使用Apapche的重写机制隐藏入口文件后,如果在整个url后面加上.html后缀
    • 让整个url看起来像是访问的静态页面,这叫做“伪静态”

调试模式

  • 生产模式

    • 错误描述比较模糊,不方便进行错误调试
    • 这种模式通常叫做“部署模式”(生产模式)
    • 开发阶段可以将框架设置为调试模式,便于进行错误调试
  • 调试模式

    • 打开项目目录 \application\config.php
    • 修改应用调试模式为true 'app_debug' => true
posted @ 2020-12-24 16:05  wing1377  阅读(338)  评论(0编辑  收藏  举报