目录结构

https://www.kancloud.cn/manual/thinkphp5/118008

安装后可以看到下面的目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
www WEB部署目录(fleastrTest)
├─application 应用目录
│ ├─common 公共模块目录(可以更改)
│ ├─module_name 模块目录
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ ├─config 配置目录
│ │ └─ … 更多类库目录
│ │
│ ├─command.php 命令行定义文件
│ ├─common.php 公共函数文件
│ └─tags.php 应用行为扩展定义文件

├─config 应用配置目录
│ ├─module_name 模块配置目录
│ │ ├─database.php 数据库配置
│ │ ├─cache 缓存配置
│ │ └─ …
│ │
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─log.php 日志配置
│ ├─session.php Session配置
│ ├─template.php 模板引擎配置
│ └─trace.php Trace配置

├─route 路由定义目录
│ ├─route.php 路由定义
│ └─… 更多

├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写

├─thinkphp 框架系统目录
│ ├─lang 语言文件目录
│ ├─library 框架类库目录
│ │ ├─think Think类库包目录
│ │ └─traits 系统Trait目录
│ │
│ ├─tpl 系统模板目录
│ ├─base.php 基础定义文件
│ ├─convention.php 框架惯例配置文件
│ ├─helper.php 助手函数文件
│ └─logo.png 框架LOGO文件

├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor 第三方类库目录(Composer依赖库)
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件

如果在linux环境下面的话,需要给 runtime 目录 777权限。

如果在linux环境下面的话,需要给 runtime 目录 777权限。

img

application:应用目录

img

index:模块目录

img

index/config.php:模块配置文件

index/common.php:模块公共函数文件

index/controller:控制器目录

index/model:模型目录

index/view:视图目录

config.php:应用配置文件

command.php:命令工具配置文件

common.php:应用公共函数文件

tags.php:应用行为扩展定义文件

extend:扩展类库目录

img

public:WEB 部署目录(对外访问目录)

img

static:静态资源存放目录(css,js,image)

index.php:应用入口文件

.htaccess:用于apache重写

router.php:快速测试文件

runtime:应用的运行时目录

img

vendor:通过composer安装的第三方类库目录

img

thinkphp:系统核心目录

img

lang:系统语言包目录

library:框架核心类库目录

tpl:系统模板目录

base.php:基础定义文件

route:路由配置目录

img

ThinkPHP框架最基本的架构

thinkphp是基于MVC模式开发的,业务逻辑、数据、界面显示分离,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

1、入口文件

用户发起的请求都会经过应用的入口文件,通常是 public/index.php文件。入口文件的内容如下:

img

在入口文件index.php中加载了基础文件base.php文件,在base.php中干了这样一些事情:

载入Loader类

注册自动加载

注册错误和异常处理机制

实现日志接口

注册类库别名

img

加载完基础文件之后,最后在index.php中执行应用并响应。

2、应用

ThinkPHP的应用是一个管理系统架构及生命周期的对象,由系统创建完成,应用通常在入口文件中被调用和执行,每个应用都具有自己独立的模块、config配置文件以及common公共函数文件。

3、模块

一个应用是可能是由多个模块组成的,通俗的来说,这些模块即为该应用目录下面的一个个的子目录,每个模块都有自己独立的MVC结构、config配置文件以及common公共函数文件。

注:模块名称请避免使用PHP保留关键字,否则会造成系统错误。

4、控制器

控制器主要负责接收发送过来的请求,并调用相关的模型业务逻辑的数据处理,并最终将用户请求数据渲染到视图页面上。

5、模型

模型类通常完成实际的业务逻辑和数据封装,并返回和格式无关的数据。在定义模型时,要注意和表名对应,因为框架中的模型会自动对应数据库中的数据表。在ThinkPHP中模型类的命名规则是除去表前缀的数据表名称,命名方式采用的驼峰命名法,而且模型的首字母要大写。

6、视图

视图接收从控制器渲染过来的数据,将数据渲染的成用户可见的页面。

7、命名空间

命名空间是程序设计者命名的内存区域,程序设计者根据需指定一些有名字的空间域,把一些全局实体分别存放到各个命名空间中,从而与其他全局实体分隔开。

通俗的说,每个名字空间都是一个名字空间域,存放在名字空间域中的全局实体只在本空间域内有效。名字空间对全局实体加以域的限制,从而合理的解决命名冲突。