首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
内容概述
ThinkPHP的配置系统
ThinkPHP的路由概述
路由条件与路由地址
Restful路由与路由分组
控制器全解
数据库操作层全解
模型层全解
视图层全解
数据验证器
缓存系统
Session和Cookie
命令行应用
开发调试
服务器部署
数据库设计
项目1:多人博客系统开发
1.1项目目的
1.2需求分析
1.3功能分析
1.4数据库设计
1.5模块设计
1.6效果展示
1.7代码示例
1.8接入统计系统
1.9项目总结
1.10项目完整代码
项目2:图书管理系统开发
2.1项目目的
2.2MVC+Repository+Service介绍
2.3需求分析
2.4功能分析
2.5模块设计
2.6数据库设计
2.7核心业务流程
2.8效果展示
2.9项目总结
2.10项目完整代码
项目3:论坛系统开发
3.1项目目的
3.2需求分析
3.3功能分析
3.4模块设计
3.5数据库设计
3.6效果展示
3.7项目总结
3.8项目完整代码
项目4:微信小程序商城
4.1项目目的
4.2需求分析
4.3功能分析
4.4模块设计
4.5数据库设计
4.6效果展示
4.7项目总结
4.8项目完整代码
当前位置:
首页>>
技术小册>>
ThinkPHP项目开发实战
小册名称:ThinkPHP项目开发实战
ThinkPHP 5采用的默认规则是PATHINFO模式,也就是如下的URL形式: ```php http://server/module/controller/action/param/value/ ``` 与ThinkPHP 3最大的不同是ThinkPHP 5的路由更加灵活,支持路由到模块的控制器/操作、控制器类的方法、闭包函数和重定向地址,甚至是任何类库的方法。 需要注意的是,ThinkPHP 5的路由是针对应用而不是模块,所以路由是针对某个应用下的所有模块。如果需要按照模块定义路由,就需要自定义如下入口文件: ![](/uploads/images/20231221/720680b7029f99a00c0a5c3a25ff63f1.png) ## 路由模式 ThinkPHP 5的路由通过url_route_on和url_route_must来控制路由行为。根据这两个配置,存在三种路由模式:普通模式、混合模式和强制模式。 ### 普通模式 禁用路由,系统按照PATHINFO模式解析请求: `'url_route_on' => false,` ### 混合模式 系统按照PATHINFO模式+路由定义解析请求: ```php 'url_route_on' => true, 'url_route_must'=> false, ``` 若定义了路由,则执行路由,否则按照PATHINFO解析。 ### 强制模式 该模式下所有请求必须设置路由,否则抛出异常: ```php 'url_route_on' => true, 'url_route_must' => true, ``` ## 路由定义 ### 编码定义 顾名思义,就是使用硬编码的形式进行定义(区别于配置式定义)。一般路由定义在application/route.php文件中,注册形式如下: Route::rule('路由表达式','路由地址','请求方法','路由条件','变量规则'); 例如,下面的注册代码将会使访问“/news/”新闻ID的链接路由到index模块的News控制器的read方法: Route::rule('news/:id','index/News/read'); 由于ThinkPHP 5的路由是针对所有模块的,所以定义的时候需要加上模块名。 ThinkPHP 5支持GET、POST、PUT、DELETE以及任意(*)请求方法定义。系统内置以下方法来简化路由定义: Route::get('news/:id','News/read'); // GET Route::post('news/:id','News/update'); // POST Route::put('news/:id','News/update'); // PUT Route::delete('news/:id','News/delete'); // DELETE Route::any('new/:id','News/read'); //任意请求方法 如果一个路由可以同时支持多种请求方法,可以使用“|”符号,意思和“或”一致。例如,有如下定义: Route::rule('news/:id','index/News/read', 'GET|POST'); 则该路由允许POST和GET请求方法访问。 ### 配置定义 通过返回数组来定义路由,而且可以批量定义,简化代码编写量。该定义方式和ThinkPHP 3很相似,但是不支持正则定义。例如: <?php return [ // 首页路由到index模块index控制器的index方法 '/' => 'index/index/index', 'news/:id' => 'index/News/read', // 变量定义 'news/[:id]' => 'index/news/read', // 可选变量定义 'news/:id$' => 'index/news/read', // 完全匹配 'user/:id' => 'index/user/show?status=1', // 传递隐式参数 // 限制变量类型 'post/:id'=> ['index/post/show',['ext'=>'html'],['id'=>'\d{4}']], ];
上一篇:
ThinkPHP的配置系统
下一篇:
路由条件与路由地址
该分类下的相关小册推荐:
PHP底层原理及源码分析
PHP8入门与项目实战(1)
HTTP权威指南
Magento2主题开发高级实战
Laravel(10.x)从入门到精通(十)
PHP高性能框架-Swoole
Laravel(10.x)从入门到精通(十五)
经典设计模式PHP版
Shopify应用实战开发
Magento零基础到架构师(产品管理)
PHP面试指南
Yii2框架从入门到精通(上)