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
更多的关于类库和命名空间的关系可以参考下一章节:命名空间。
模块和控制器隐藏
由于默认是采用多模块的支持,所以多个模块的情况下必须在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路由功能实现。
thinkphp5.0模块设计的更多相关文章
- thinkphp 5.0 模块设计
模块设计 5.0版本对模块的功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app作为根命名空间(可配置更改). 目录结构 标准的应用和模块目录结构如下: ├─ap ...
- 高性能PHP框架thinkphp5.0.0 Beta发布-为API开发而设计
ThinkPHP V5.——为API开发而设计的高性能框架 ThinkPHP5..0版本是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载 ...
- 对thinkphp5.0框架的实例学习
不论是渗透测试还是代码审计的过程中会碰到用不同的框架搭建起来的网站,熟悉这些框架的基本原理,会帮助我们快速的理解漏洞原理,提高干活效率,所以自己本地搭了个php环境,来入门实例学习下thinkphp5 ...
- thinkphp5.0架构总览
ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织. MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V) ...
- thinkphp5.0目录结构
下载最新版框架后,解压缩到web目录下面,可以看到初始的目录结构如下: project 应用部署目录 ├─application 应用目录(可设置) │ ├─common 公共模块目录(可更改) │ ...
- thinkPHP5.0的学习研究【架构】
2017年6月19日18:51:53 架构:1.ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织.2.MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC ...
- thinkPHP5.0的学习研究【基础】
2017年6月19日13:25:56 基础:1.ThinkPHP5的环境要求如下: PHP >= 5.4.0 PDO PHP Extension MBstring P ...
- thinkPHP5.0的学习研究【序言】
2017年6月19日13:19:151.ThinkPHP V5.0——为API开发而设计的高性能框架2.ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应 ...
- ThinkPHP5.0框架开发--第3章 TP5.0 配置
ThinkPHP5.0框架开发--第3章 TP5.0 配置 第3章 TP5.0 配置 ========================================================= ...
随机推荐
- mysql cpu 占用高
vi /etc/my.cnf [mysqld]tmp_table_size=200M mysql> show global status like ‘created_tmp%‘; +—————— ...
- 启动EMQ(emqtt)时报错找不到libsctp.so.1
libsctp.so.1: cannot open shared object file: No such file or directory 发现没有安装sctp [root@localho ...
- Stat1—浅谈协方差矩阵
今天看论文的时候又看到了协方差矩阵这个破东西,以前看模式分类的时候就特困扰,没想到现在还是搞不清楚,索性开始查协方差矩阵的资料,恶补之后决定马上记录下来,嘿嘿~本文我将用自认为循序渐进的方式谈谈协方差 ...
- 26、Python的可变类型和不可变类型?
Python的每个对象都分为可变和不可变 可变:列表.字典 不可变:数字.字符串.元祖 对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其 ...
- numpy 简介
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘测——LCT
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2049 省选之前来切一道数据结构模板题. 题意 这是一道模板题. N个点,M次操作,每次加边/ ...
- eclipse 常见问题之字体更改、添加注释模板
有些同学可能会和我有一样的困扰,每次想要更改字体大小.背景颜色等,都需要百度一下才知道怎么去做...不知道有没有这种情况的孩子,反正我经常遇到,老是记不住,今天写下来,顺带自己忘记的时候可以查看一下. ...
- 使用Git Wiki 管理文档时,文档编写的基本用法
自己初次接触GitLab,通过百度和自己查找资料,了解了一部分.在自己的工作中,主要用到GitLab的Wiki文档版本管理能力.我总结了一小部分文本编辑需要用到的东西. 一.文本的排版 为了让文本/文 ...
- 看看PHP迭代器的内部执行过程
class myIterator implements Iterator { private $position = 0; private $array = array( "first_el ...
- php琐碎
1.类中的常量,可以用类来引用: class MyClass() { const SUCCESS ="success"; const FAIL ="fail"; ...