thinkphp url .php,ThinkPHP的URL访问模式

本文详细介绍了ThinkPHP5.0框架中的URL路由机制,包括在没有启用路由时的典型URL访问规则、命令行访问模式以及路由模式的三种配置:关闭PATH_INFO、混合模式和强制模式。路由允许开发者隐藏实际的模块和控制器结构,提高应用程序的安全性和可读性。通过定义路由规则,可以将URL映射到特定的控制器和方法,同时支持动态参数传递。在路由配置中,可以使用动态注册或直接在route.php文件中定义规则,实现URL的灵活管理和定制。

以下是完全开发手册的内容

URL设计

ThinkPHP 5.0 在没有启用路由的情况下典型的URL访问规则是:

http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/ 支持切换到命令行访问,如果切换到命令行模式下面的访问规则是:

php.exe index.php(或者其它应用入口文件) 模块/控制器/操作/[参数名/参数值…]

可以看到,无论是URL访问还是命令行访问,都采用 PATH_INFO 访问地址,其中 PATH_INFO 的分隔符是 可以设置的。

注意: 5.0 取消了URL模式的概念,并且普通模式的URL访问不再支持,但参数可以支持普通方式传值,例 如:

php.exe index.php(或者其它应用入口文件) 模块/控制器/操作?参数名=参数值&…

我说说我的理解

通过URL路径就能访问指定类的指定方法,传指定参数。

但是这样毫无保留的暴露的项目模块划分,将项目结构清晰的表现在了地址栏。

于是有了路由的概念。

路由

路由是什么?定义大概就是这样:将你访问的地址命名为另一个地址

路由模式

一、普通模式

关闭PATH_INFO方式的URL

‘url_route_on’ => false

二、混合模式

开启路由+PATH_INFO的模式

‘url_route_on’ => true,

‘url_route_must’=> false,

三、强制模式

开启路由,并设置必须定义路由才能访问:

‘url_route_on’ => true,

‘url_route_must’ => true,

首页的路由规则采用 / 定义即可,例如下面把网站首页路由输出 Hello,world!

Route::get(’/’,function(){ return ‘Hello,world!’;

});

推荐使用动态注册的方式,也就是上面这种 Route::get 这样的方式

动态注册

路由定义采用 \think\Route 类的 rule 方法注册,通常是在应用的路由配置文件 application/route.php 进行注册,格式是:

Route::rule(‘路由表达式’,‘路由地址’,‘请求类型’,‘路由参数(数组)’,‘变量规则(数组)’); 例如注册如下路由规则:

use think\Route;

// 注册路由到index模块的News控制器的read操作

Route::rule(‘new/:id’,‘index/News/read’);

我们访问:

http://serverName/new/5

ThinkPHP5.0的路由规则定义是从根目录开始,而不是基于模块名的。

会自动路由到:

http://serverName/index/news/read/id/5

并且原来的访问地址会自动失效。

路由表达式(第一个参数)支持定义命名标识,例如:

// 定义new路由命名标识

Route::rule([‘new’,‘new/:id’],‘index/News/read’);

注意,路由命名标识必须唯一,定义后可以用于URL的快速生成。

可以在rule方法中指定请求类型,不指定的话默认为任何请求类型,例如:

Route::rule(‘new/:id’,‘News/update’,‘POST’);

其中rule可以换成get、post、put、delete、any

// 开启路由定义的全局完全匹配

‘route_complete_match’ => true,

除了动态注册

定义路由配置文件

除了支持动态注册,也可以直接在应用目录下面的 route.php 的最后通过返回数组的方式直接定义路由规 则,内容示例如下:

return [

‘new/:id’ => ‘News/read’,

‘blog/:id’ => ‘Blog/update’,[‘method’ => ‘post|put’], [‘id’ => ‘\d+’]],

];

由于检测机制问题,动态注册的性能比路由配置要高一些,尤其是多种请求类型混合定义的时候

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值