thinkPHP5.0框架模块设计详解

发布时间 - 2026-01-11 00:14:26    点击率:

本文实例讲述了thinkPHP5.0框架模块设计。分享给大家供大家参考,具体如下:

5.0版本对模块的功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app作为根命名空间(可配置更改)。

目录结构

标准的应用和模块目录结构如下:

├─application           应用目录(可设置)
│  ├─common             公共模块目录(可选)
│  ├─common.php         公共函数文件
│  ├─route.php          路由配置文件
│  ├─database.php       数据库配置文件
│  ├─config.php         应用配置文件
│  ├─module1            模块1目录
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录
│  │
│  ├─module2            模块2目录
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录

遵循ThinkPHP5.0的命名规范,模块目录全部采用小写和下划线命名。

模块名称请避免使用PHP保留关键字(保留字列表参见 http://php.net/manual/zh/reserved.keywords.php ),否则会造成系统错误。

其中common模块是一个特殊的模块,默认是禁止直接访问的,一般用于放置一些公共的类库用于其他模块的继承。

模块类库

一个模块下面的类库文件的命名空间统一以app\模块名开头,例如:

// index模块的Index控制器类
app\index\controller\Index
// index模块的User模型类
app\index\model\User

其中app可以通过定义的方式更改,例如我们在应用配置文件中修改:

'app_namespace' => 'application',

那么,index模块的类库命名空间则变成:

// index模块的Index控制器类
application\index\controller\Index
// index模块的User模型类
application\index\model\User

更多的关于类库和命名空间的关系可以参考下一前面一篇《thinkPHP5.0框架命名空间详解》。

模块和控制器隐藏

由于默认是采用多模块的支持,所以多个模块的情况下必须在URL地址中标识当前模块,如果只有一个模块的话,可以进行模块绑定,方法是应用的公共文件中添加如下代码:

// 绑定当前访问到index模块
\think\Route::bind('index');

绑定后,我们的URL访问地址则变成:

http://serverName/index.php/控制器/操作/[参数名/参数值...]

访问的模块是index模块。

如果你的应用比较简单,模块和控制器都只有一个,那么可以在应用公共文件中绑定模块和控制器,如下:

// 绑定当前访问到index模块的index控制器
\think\Route::bind('index/index');

设置后,我们的URL访问地址则变成:

http://serverName/应用入口/操作/[参数名/参数值...]

访问的模块是index模块,控制器是Index控制器。

单一模块

如果你的应用比较简单,只有唯一一个模块,那么可以进一步简化成使用单一模块结构,方法如下:

首先在应用配置文件中定义:

// 关闭多模块设计
'app_multi_module' => false,

然后,调整应用目录的结构为如下:

├─application        应用目录(可设置)
│  ├─controller      控制器目录
│  ├─model           模型目录
│  ├─view            视图目录
│  ├─ ...            更多类库目录
│  ├─common.php      函数文件
│  ├─route.php       路由配置文件
│  ├─database.php    数据库配置文件
│  └─config.php      配置文件

URL访问地址变成

http://serverName/index.php(或者其它应用入口)/控制器/操作/[参数名/参数值...]

同时,单一模块设计下的应用类库的命名空间也有所调整,例如:

原来的

app\index\controller\Index
app\index\model\User

变成

app\controller\Index
app\model\User

更多的URL简化和定制还可以通过URL路由功能实现。

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。


# thinkPHP5.0  # 模块设计  # 浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别  # Thinkphp5.0自动生成模块及目录的方法详解  # thinkPHP5.0框架安装教程  # thinkPHP5.0框架命名空间详解  # thinkPHP5.0框架配置格式、加载解析与读取方法  # ThinkPHP5.0多个文件上传后找不到临时文件的修改方法  # 配置文件  # 类库  # 绑定  # 多模  # 是一个  # 进阶  # 相关内容  # 还可以  # 多个  # 下划线  # 感兴趣  # 可以通过  # 下一  # 给大家  # 只有一个  # 可选  # 唯一一  # 更多关于  # 则会  # 都只 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 香港服务器网站卡顿?如何解决网络延迟与负载问题?  教你用AI润色文章,让你的文字表达更专业  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Internet Explorer官网直接进入 IE浏览器在线体验版网址  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  如何用PHP快速搭建高效网站?分步指南  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Laravel如何创建自定义中间件?(Middleware代码示例)  如何用搬瓦工VPS快速搭建个人网站?  深圳网站制作培训,深圳哪些招聘网站比较好?  javascript读取文本节点方法小结  如何在阿里云ECS服务器部署织梦CMS网站?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  如何在IIS中新建站点并配置端口与物理路径?  魔方云NAT建站如何实现端口转发?  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  js实现点击每个li节点,都弹出其文本值及修改  详解jQuery中基本的动画方法  Android使用GridView实现日历的简单功能  详解jQuery中的事件  如何快速搭建FTP站点实现文件共享?  Laravel怎么使用artisan命令缓存配置和视图  Laravel如何优化应用性能?(缓存和优化命令)  Laravel如何处理CORS跨域请求?(配置示例)  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Laravel怎么调用外部API_Laravel Http Client客户端使用  米侠浏览器网页背景异常怎么办 米侠显示修复  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel Docker环境搭建教程_Laravel Sail使用指南  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  教你用AI将一段旋律扩展成一首完整的曲子  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  微信小程序 scroll-view组件实现列表页实例代码  使用spring连接及操作mongodb3.0实例  如何在橙子建站中快速调整背景颜色?  长沙做网站要多少钱,长沙国安网络怎么样?  非常酷的网站设计制作软件,酷培ai教育官方网站?  北京企业网站设计制作公司,北京铁路集团官方网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中