thinkphp5入门【三】pathinfo模式的url访问

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Tacks/article/details/85121188

 tp5访问入口文件的时候是,访问public目录下的index.php,那么她真正访问的url到底是什么?如何去访问其他页面,实际上她默认使用的PATH_INFO模式进行访问。

PATHINFO模式

想想在我使用tp3.2的时候,也是利用的path_info去访问,再往前刚接触的php的时候,我们写的php脚本访问的时候就是按照文件位置去访问的对应url,例如http://localhost/test/a/b/c.php,确实这种就是普通的路由访问,直接按照url去找你对应文件夹下的php然后执行。

那么pathinfo的模式, 其url的路径实际并不存在,apache或者nginx等通过一定的手段将不存在的路径

保存在$_SERVER['PATH_INFO']环境变量里面,举个例子http://localhost/path_info.php/index/index/index.html?id=1;

那么在path_info.php里面我就只写了一个例子

<?php
echo $_SERVER['PATH_INFO'];
?>

会输出

/index/index/index.html

这一段就是pathinfo模式去,去访问不存在的路径,会存在一个环境变量$_SERVER['PATH_INFO'],后面的id=1作为$_GET['id']传入页面。

 

TP5默认path_info模式

好吧,转到正题上,那么tp5的url是怎么弄的?

实际上tp就是根据PATHINFO,从里面提取到模块名,控制器名,操作方法名,将剩余的部分转换成为$_GET。

下面简单来看一下这几个部分

入口文件index.php

默认为于public/index.php,定义应用目录,加载框架引导目录

模块

位置:(D:\wamp\www\Tp5\application\) (我用的wampServer环境,位置可能和你们不一样,仅作参考)

             默认的index模块就是 index目录

命名规范:目录使用小写+可以使用下划线   设置命名空间会用到。

控制器

位置:(D:\wamp\www\Tp5\application\index\controller\)

            默认的控制器文件时Index.php

命名规范:文件名采用大驼峰法,首字母大写,后缀名以.php结尾,(Tp3.2的时候,我们的控制器时加了.class.php作为后缀,这里我们可以省去.class了)

控制器文件名要与类的文件名保持一致

命名空间与类文件名所在的路径一致

操作方法

位置:控制器类里面的方法

           默认的时index方法

命名规范:小驼峰法

 

URL大小写问题

 最后,再看一下这个让人迷惑的地方,很多时候报错就是你的url访问找不到你的控制器类

tp5默认url不区分大小写,url里面的模块/控制器/操作名会自动转化大小写,控制器在最后调用的时候会转化为驼峰法处理

下面我关闭url转化控制器和操作名,来访问

顺道看一下日志吧

位置:(D:\wamp\www\Tp5\runtime\log\)

日志在项目开发的时候还是很重要的,看看日志也能帮助理解

小结

[1]thinkphp5默认使用pathinfo模式来解析url进行访问

[2]模块目录小写,控制器名和类名一致采用大驼峰,后缀是.php,操作方法采用小驼峰书写

[3]我建议关闭“是否自动转换URL中的控制器和操作名”,也就是config.php配置文件里面url_convert设置为false,大小写严格一些,方便以后上线在linux运行

[4]永远记住,日志很重要

猜你喜欢

转载自blog.csdn.net/Tacks/article/details/85121188