ThinkPHP5安装后(或者下载后的压缩文件解压后)可以看到下面的目录结构:

tp5├─application     应用目录
├─extend          扩展类库目录(可定义)
├─public          网站对外访问目录
├─runtime         运行时目录(可定义)
├─vendor          第三方类库目录(Composer)
├─thinkphp        框架核心目录
├─build.php       自动生成定义文件(参考)
├─composer.json   Composer定义文件
├─LICENSE.txt     授权说明文件
├─README.md       README 文件
├─think           命令行工具入口

一般的信息管理项目中都分为前台和后台所以在application中一般新建admin和index两个文件夹,index文件夹一般在配置好环境后第一次运行index.php入口文件的时候会自动生成,而admin文件夹我们可以使用命令行的方式来生成。

切换到命令行模式下,进入到应用根目录并执行如下指令:

php think build --moudle admin

就会生成一个admin模块,包括如下目录结构:

├─admin   │  ├─controller      控制器目录
│  ├─model           模型目录
│  ├─view            视图目录
│  ├─config.php      模块配置文件
│  └─common.php      模块公共文件

同时也会生成一个默认的Index控制器文件。

这样,整个项目的目录结构就变成了:

├─application           应用目录(可设置)
│  ├─index              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块公共文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  └─view            视图目录
│  ├─admin              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块公共文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  └─view            视图目录
│  │
│  ├─command.php        命令行工具配置文件
│  ├─common.php         应用公共文件
│  ├─config.php         应用配置文件
│  ├─tags.php           应用行为扩展定义文件
│  ├─database.php       数据库配置文件
│  └─route.php          路由配置文件

可以看出index和admin模块中都包含model、controller、和view三个文件夹,这三个文件夹分别存放MVC模式中的模型、控制器和视图文件。

由于Model层存放的是模型,也就是与数据库中表内容相对应的类文件,而这部分数据库的操作在index和admin模块中都是需要的。所以我们将model文件夹放在Index和admin模块的外部,合二为一,这样index和admin就可以很方便的使用它了,从逻辑上也变得更清晰,现在,整个目录结构变这样:

├─application           应用目录(可设置)
│  ├─index              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块公共文件
│  │  ├─controller      控制器目录          
│  │  └─view            视图目录
│  ├─admin              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块公共文件
│  │  ├─controller      控制器目录           
│  │  └─view            视图目录
│  │
│  ├─model              模型层            
│  ├─command.php        命令行工具配置文件
│  ├─common.php         应用公共文件
│  ├─config.php         应用配置文件
│  ├─tags.php           应用行为扩展定义文件
│  ├─database.php       数据库配置文件
│  └─route.php          路由配置文件

为了实现数据与操作的分离,model层进一步细化为model层、logic层、service层,这些默认是放在某个模块下的,如在index模块中logic层默认的目录是index/logic,这样ThinkPHP才能找到它,如果没找到它的话,ThinkPHP会到模块外部的Common文件夹中找它,service层也是这样的,如果我们想index和admin两个模块都使用它们,那么我们需要把它们放在application\common文件夹中,这就需要在application中新建一个common文件夹。现在目录结构变成这样:

├─application           应用目录(可设置)
│  ├─index              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块公共文件
│  │  ├─controller      控制器目录          
│  │  └─view            视图目录
│  ├─admin              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块公共文件
│  │  ├─controller      控制器目录           
│  │  └─view            视图目录
│  │
│  ├─model              模型目录
│  ├─common             公共目录
│  │  ├─logic       逻辑层
│  │  ├─service       服务层           
│  ├─command.php        命令行工具配置文件
│  ├─common.php         应用公共文件
│  ├─config.php         应用配置文件
│  ├─tags.php           应用行为扩展定义文件
│  ├─database.php       数据库配置文件
│  └─route.php          路由配置文件 由于在ThinkPHP5中将模型验证也与模型分离了出来,放在每个模块下专门的validate文件夹中,而验证无论是前台或后台向数据库中写数据都是需要的,ThinkPHP查找它的方法与前述查找logic层的方法是一样的,
先在本模块的validate文件夹中找它,如果找不到就调到本模块外层的common文件夹中寻找。同样地,我们将它放在模块外层的common文件家中。现在,目录变成如下的样子:
├─application           应用目录(可设置)
│  ├─index              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块公共文件
│  │  ├─controller      控制器目录          
│  │  └─view            视图目录
│  ├─admin              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块公共文件
│  │  ├─controller      控制器目录           
│  │  └─view            视图目录
│  │
│  ├─model              模型目录
│  ├─common             公共目录
│  │  ├─logic       逻辑层
│  │  ├─service       服务层 
│  │  ├─validate        模型验证          
│  ├─command.php        命令行工具配置文件
│  ├─common.php         应用公共文件
│  ├─config.php         应用配置文件
│  ├─tags.php           应用行为扩展定义文件
│  ├─database.php       数据库配置文件
│  └─route.php          路由配置文件 参考文献:
[1]ThinkPHP5.0快速入门
[2]ThinkPHP5.0完全开发手册
[3]ThinkPHP5.0入门实例教程

ThinkPHP5项目目录的更多相关文章

  1. ThinkPHP5项目目录规划实践

    ThinkPHP5安装后(或者下载后的压缩文件解压后)可以看到下面的目录结构: tp5├─application     应用目录 ├─extend          扩展类库目录(可定义) ├─pu ...

  2. thinkphp5项目--个人博客(三)

    thinkphp5项目--个人博客(三) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  3. thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片)

    thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise ...

  4. 使用express-generator初始化你的项目目录

    express 4.x以后将express命令独立到 express-generator包中,所以想使用express初始化项目目录,可以npm install express-genrator   ...

  5. 为什么eclipse中代码提示错误,但是项目目录却不提示错误

    public class Aasf { public static void main(String[] args) { System.out.println("");aihfsa ...

  6. Laravel项目目录结构说明

    Laravel项目目录结构说明: |- vendor 目录包含你的 Composer 依赖模块及laravel框架. |- bootstrap 目录包含几个框架启动跟自动加载配置的文件. |- app ...

  7. MVVM 模式下iOS项目目录结构详细说明

    ➠更多技术干货请戳:听云博客 我们在做项目的时候,会经常用到各种设计模式,最常见的要数 MVC (模型,视图,控制器)了.但是,今天我们要说的是另一种设计模式——MVVM. 所以 MVVM 到底是什么 ...

  8. JavaWeb学习之tomcat安装与运行、tomcat的目录结构、配置tomcat的管理用户、web项目目录、虚拟目录、虚拟主机(1)

    1.tomcat安装与运行双击tomcat目录下的bin/startup.bat,启动之后,输入http://localhost:8080,出现安装成功的提示,表示安装tomcat成功 2.tomca ...

  9. 1-5Tomcat 目录结构 和 web项目目录结构

    对应我的安装路径: web项目目录结构

随机推荐

  1. 20155323刘威良 网络对抗《网络攻防》 Exp1 PC平台逆向破解(5)M

    实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可 ...

  2. 20155333 《网络对抗》Exp3 免杀原理与实践

    20155333 <网络对抗>Exp3 免杀原理与实践 基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测: 启发式恶意软件检测: 基于行为的恶意软件检测. (2)免杀是做 ...

  3. 全虚拟化和半虚拟化的区别 cpu的ring0 ring1又是什么概念? - 转

    http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html ring0是指CPU的运行级别,ring0是最高级别,ring1次之, ...

  4. ucos获得系统时间OSTimeGet();

    OSTimeGet() 获得系统节拍值OSTime,滴答定时器中断一次OSTime++.

  5. tree的使用,显示行号,find命令应用

    第1章 linux启动过程 1.开机自检bios 2.mbr引导 3.GRUB 菜单:选择不同的内核 4.加载内核 5.运行init进程 6.读取/etc/inittab运行级别配置文件 7.执行 / ...

  6. vuex实践之路——笔记本应用(二)

    上一篇我们简单介绍了vuex在此项目中的作用. 这次来理一下项目的整体思路. main.js上次看过了,首先看App.vue文件 我们引入了Toolbar.vue,NodeList.vue,Edito ...

  7. .NET Core 开发之旅 (1. .NET Core R2安装教程及Hello示例)

    前言 前几天.NET Core发布了.NET Core 1.0.1 R2 预览版,之前想着有时间尝试下.NET Core.由于各种原因,就没有初试.刚好,前几天看到.NET Core发布新版本了,决定 ...

  8. Js_Eval方法

    定义和用法eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法eval(string) 其中参数string为必需.是要计算的字符串,其中含有要计算的 JavaScr ...

  9. DRF框架QQ登录功能

    用户模块---QQ登录 流程图 QQ登录文档:http://wiki.connect.qq.com/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_oauth2-0 流程简述 ...

  10. 【机器学习】Apriori算法——原理及代码实现(Python版)

    Apriopri算法 Apriori算法在数据挖掘中应用较为广泛,常用来挖掘属性与结果之间的相关程度.对于这种寻找数据内部关联关系的做法,我们称之为:关联分析或者关联规则学习.而Apriori算法就是 ...