我们来看看TP5的架构。
ThinkPHP 5.0基于MVC(模式、视图、控制器)
方式来组织。
TP5的访问url的PATH_INFO方式:
常用术语:
一、入口文件(index.php
):
1、入口文件是整个Web应用的起点;
2、入口文件最常见的就是:index.php
;
3、入口文件并不唯一,例如可为后台单独设置入口:admin.php
;
4、入口文件可以通过url重写功能将其隐藏;
二、应用(application
):
1、应用是URL请求到完成的(生命周期)处理对象,由thinkphp\library\think\App
类处理;
2、应用必须在入口文件(如index.php
)中调用并执行;
3、可以为不同的应用创建多个入口文件,如后台入口:admin.php
;
4、应用有自己独立的配置文件(config.php
)和公共函数文件(common.php
);
三、模块(module
)
1、一个应用下有多个模块,对应着应用的不同部分,如前台、后台;
2、每个模块都可以有完整的MVC类库,创建和管理这些类库是我们最主要的工作;
3、每个模块都可以有独立的配置文件(config.php
)和公共函数文件(common.php
);
4、如果应用简单,可使用单模块模式,只要设置thinkphp/convention.php
中的:'app_multi_module=>false'
即可,此时应用。
四、控制器(controller
)
1、每个模块下可以有多个控制器负责响应URL
请求;
2、每个控制器对应一个控制器类(class
),如User.php
;
3、控制器管理着模型与视图,是系统资源的调度与分配中心;
4、TP5
的控制器不需要继承任何基类就可以工作(旧版本中需要继承controller类
才能工作)。
五、操作(action
)
1、操作对应着控制器类中的方法,是URL
请求的最小单元;
2、任何的URL
请求最终都是由控制器中的方法来完成的;
3、操作是整个应用的最终执行单元,是URL
路由的核心与目标。
六、模型(model
)
1、模型通常对应整个应用,因此模型通常在应用(application
)目录下创建;
2、尽管模型主要是针对数据库的CURD操作,但也可以不操作数据库;
3、模型通常是完成实际的业务逻辑和数据封装,并返回和格式无关的数据;
4、模型返回的数据,通常是数组(array
)或者是字符串(string
);
5、模型支持分层设计,例如将模型层分成逻辑层/服务层/事件层。
七、视图(view
)
1、控制器通过调用模型返回的数据,是通过视图转换成不同格式输出的;
2、视图根据请求,调用模板引擎确定是直接输出还是模板解析后再输出;
3、视图是由大量的模板文件组成的,这些文件对应着不同控制器中的操作方法;
4、模板目录可以动态设置;
5、视图最直观的理解,就是由一系列的HTML文件组成。