thinkPHP5.0框架模块设计详解


Posted in PHP onMarch 18, 2017

本文实例讲述了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框架的PHP程序设计有所帮助。

PHP 相关文章推荐
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 PHP
apache rewrite_module模块使用教程
Jan 10 PHP
php GD绘制24小时柱状图
Jun 28 PHP
php checkdate、getdate等日期时间函数操作详解
Mar 11 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
php中serialize序列化与json性能测试的示例分析
Apr 27 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
php smtp实现发送邮件功能
Jun 22 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
thinkPHP5.0框架命名空间详解
Mar 18 #PHP
thinkPHP5.0框架自动加载机制分析
Mar 18 #PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 #PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 #PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 #PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 #PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 #PHP
You might like
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
node.js入门教程
2014/06/01 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
javascript常用方法汇总
2014/12/02 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
python实现telnet客户端的方法
2015/04/15 Python
python字符串,数值计算
2016/10/05 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
墨西哥网上超市:Superama
2018/07/10 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
玩具公司的创业计划书
2013/12/31 职场文书
大学生自我鉴定书
2014/03/24 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
教师个人自我评价范文
2014/04/13 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
给老婆的检讨书
2015/01/27 职场文书
客房服务员岗位职责
2015/02/09 职场文书
资产移交协议书
2016/03/24 职场文书