【前言】
? ?本文总结下U方法,手册搜索U函数、URL模式
?
【主体】
(1)URL生成
? ? ? 为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。
①U方法的定义规则如下(方括号内参数根据实际应用决定):
class="表达式">U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])
②地址表达式
地址表达式的格式定义如下:
[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...
如果不定义模块的话 就表示当前模块名称,下面是一些简单的例子:
U('User/add') // 生成User控制器的add操作的URL地址 U('Blog/read?id=1') // 生成Blog控制器的read操作 并且id为1的URL地址 U('Admin/User/select') // 生成Admin模块的User控制器的select操作的URL地址
?
(2)URL模式
? ? ? 入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块、控制器和操作:
?
http://serverName/index.php/模块/控制器/操作
?
? ? ? 这是3.2版本的标准URL格式,可以通过设置模块绑定或者域名部署等方式简化URL地址中的模块及控制器名称。
①URL大小写
? ? ?ThinkPHP框架的URL是区分大小写(主要是针对模块、控制器和操作名,不包括应用参数)的,这一点非常关键,因为ThinkPHP的命名规范是采用驼峰法(首字母大写)的规则,而URL中的模块和控制器都是对应的文件,因此在Linux环境下面必然存在区分大小写的问题。
框架内置了一个配置参数用于解决URL大小写的问题,如下:
?
'URL_CASE_INSENSITIVE' => true,
?
? ? ? 当URL_CASE_INSENSITIVE设置为true的时候表示URL地址不区分大小写,这个也是框架在部署模式下面的默认设置。
? ? ? 当开启调试模式的情况下,这个参数是false,因此你会发现在调试模式下面URL区分大小写的情况。
②URL模式
? ? ? 如果我们直接访问入口文件的话,由于URL中没有模块、控制器和操作,因此系统会访问默认模块(Home)下面的默认控制器(Index)的默认操作(index),因此下面的访问是等效的:
?
http://serverName/index.php http://serverName/index.php/Home/Index/index
?
? ? ? 这种URL模式就是系统默认的PATHINFO模式,不同的URL模式获取模块和操作的方法不同,ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,可以设置URL_MODEL参数改变URL模式。
?
列表:
URL模式 ? ? ? ? ? ? ? URL_MODEL设置
普通模式 ? ? ? ? ? ? ? ? ? 0
PATHINFO模式 ? 1
REWRITE模式 ? 2
兼容模式 ? ? ? ? ? ? ? ? ? 3
?
? ? ? 如果你整个应用下面的模块都是采用统一的URL模式,就可以在应用配置文件中设置URL模式,如果不同的模块需要设置不同的URL模式,则可以在模块配置文件中设置。
详解:https://www.kancloud.cn/manual/thinkphp/1697
?
?
?
?
?
?
?
?
?
.