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 thinkController;
- think是命名空间 Controller是基类控制器
- 定义当前控制器类,继承控制器基类(可选)
- 声明命名空间
# 定义测试控制器Test.php
<?php
namespace appindexcontroller;
use thinkController;
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解析地址,并不会修改浏览器地址栏
- 使用PHPStudy需要将public目录的.htaccess文件中,index.php后面加上
<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看起来像是访问的静态页面,这叫做“伪静态”
调试模式
-
生产模式
- 错误描述比较模糊,不方便进行错误调试
- 这种模式通常叫做“部署模式”(生产模式)
- 开发阶段可以将框架设置为调试模式,便于进行错误调试
-
调试模式
- 打开项目目录
applicationconfig.php
- 修改应用调试模式为true
'app_debug' => true
- 打开项目目录