模块设计

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

更多的关于类库和命名空间的关系可以参考下一章节:命名空间。

模块和控制器隐藏

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

// 绑定当前访问到index模块
define('BIND_MODULE','index');

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

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

访问的模块是index模块。

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

// 绑定当前访问到index模块的index控制器
define('BIND_MODULE','index/index');

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

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

访问的模块是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路由功能实现。

 

转载于:https://www.cnblogs.com/chuanqideya/p/5935504.html

thinkphp 5.0 模块设计相关推荐

  1. ThinkPHP无限分类模块设计

    public function catelist(){$cate=D('Cate');//var_dump($cate->gettree());exit;$cateres=$cate->g ...

  2. 基于FPGA的USB2.0数据传输(通过本文可以自己设计USB2.0模块)

    文章部分内容参考了相关论坛中的内容: 对文章中内容感兴趣或者有不懂的可以咨询QQ:2859340499 B站对应讲解本文视频链接 首先来说一下USB这个大家都知道的东西吧: USB通用串行总线,是应用 ...

  3. 1278: 实现计算器基本功能(1级)编写程序分模块设计实现计算器的基本运算功能(加减乘除,除数默认不为0)。

    1278: 实现计算器基本功能(1级) 时间限制: 1 Sec 内存限制: 128 MB 提交: 78 解决: 51 [提交] [状态] [讨论版] [命题人:admin] 题目描述 编写程序分模块设 ...

  4. ThinkPHP V5.0 正式版发布

    ThinkPHP5.0版本是一个颠覆和重构版本,官方团队历时十月,倾注了大量的时间和精力,采用全新的架构思想,引入了更多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持compose ...

  5. ThinkPHP 多语言模块RCE漏洞复现

    1.产品简介 ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架.最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协 ...

  6. 客户管理系统之模块设计(十)

    3,客户选择模块设计 客户选择模块是用来提供对已实用户的选择,当中左边用一个ListBox控件显示全部已经加入的客户,右边用一个ListBox显示选择的客户.每次最多选择两个客户.然后还须要加入一个P ...

  7. HDLBits答案(6)_硬件模块设计的思考方式

    硬件模块设计的思考方式 HDLBits链接 基本的逻辑门操作 题目描述1:将输入端口in和输出端口out连接. Solution1: module top_module (input in,outpu ...

  8. ylbtech-Model-Account(通用账户模块设计)

    ylbtech-DatabaseDesgin:ylbtech-Model-Account(通用账户模块设计) ylbtech-Model-Account(通用账户模块设计) 1.A,数据库关系图(Da ...

  9. Java生鲜电商平台-团购模块设计与架构

    Java生鲜电商平台-团购模块设计与架构 说明:任何一个电商系统中,对于促销这块是必不可少的,毕竟这块是最吸引用户的,用户也是最爱的模块之一,理由很简单,便宜. 我的经验是无论是大的餐饮点还是小的餐饮 ...

  10. Java充电宝模型设计_继续探讨点赞功能模块设计

    继续探讨点赞功能模块设计 前几天我们设计了点赞模块的模块,大致思路就是: 用户点赞,首先缓存到redis中进行保存,redis中既要保存点赞总数,还要保存点赞记录.然后定时执行redis数据到数据库中 ...

最新文章

  1. 服务器系统摁c,如何系统有效学习c服务器开发
  2. Linux之不删除指定文件夹,其他都删(文件和文件夹)
  3. Serverless 如何在阿里巴巴实现规模化落地?
  4. AJAX中文传值乱码问题解决方法
  5. hbase 学习(十四)Facebook针对hbase的优化方案分析
  6. 深度linux_深度:图文带你走进Linux系统结构
  7. sql server 性能_SQL Server性能基础
  8. Oracle从10g升级到11g详细步骤
  9. linux 光盘本地yum源,小凡带你搭建本地的光盘yum源
  10. 2021/9/7 ad9361 SPI 通信与数据接口
  11. 百度云盘批量转存工具使用教程
  12. 安卓蓝牙BluetoothBLE开发JDY-10M
  13. 电视dns服务器修复,电信电视dns遭到劫持的解决方法分享
  14. cocos2dx《我叫MT》源码和资源破解下载
  15. 计算机无法自动连接网络连接,电脑无法自动连接wifi怎么办?教你win7和win10连接无线方法...
  16. 安庆集团-冲刺日志(第七天)
  17. 学习笔记:新技术与新趋势(演讲者:王煜全-海银资本合伙人)
  18. 20191123_python朴素贝叶斯算法实现
  19. 完美解决idea2020一直indexing,无法操作的问题
  20. Ubuntu 18.04及Snap体验——让Linux入门更简单(转))

热门文章

  1. HashTable 简述
  2. JavaScript(3):基础部分之异常处理
  3. C++ 任意类型 转 string
  4. html里文字跳动,Web前端
  5. cc ai条码插件_科脉神秘黑科技产品横空出世,AI能为生鲜称重带来哪些变革?
  6. springboot event线程池总结
  7. VI.Multidocument Transactions
  8. Hibernate的单向1-1关联(二)
  9. SpringBoot使用thymefeal出现No mapping for GET /xxx的解决办法
  10. 循环神经网络系列(二) LSTM 和 GRU