架构总览
ThinkPHP5 基于MVC(模型 — 视图 — 控制器)来组织;
模型与视图,用控制器强制分离,数据请求与展示由控制器统一调配!
1.URL默认采用PATH_INFO方式
http://域名 / 入口文件 / 模块 / 控制器 / 操作
入口文件:应用的入口,如index.php
模块:应用单元,如 user 对应一个目录
控制器:控制单元,如 Index 一般为类文件
操作:执行单元,如 add() 控制器类文件中的执行方法
举例:http://tp5.com/index.php/index/user/list/ id/10/name/peter
id/10/name/peter 是参数列表
2.常用术语
应用,入口
模块,控制器,方法,参数
模型,视图
2.1入口文件(index.php)
(1)入口文件是整个WEB应用的起点;
(2)入口文件最常用的是index.php;
(3)入口文件并不唯一,例如可在后台单独设置入口:admin.php;
(4)入口文件可以通过URL重写功能将其隐藏
2.2应用(application)
(1)应用是URL请求到完成的(生命周期)处理对象,由 hinkApp 类处理;
(2)应用必须在入口文件(如index.php)中调用并执行;
(3)可为不同的应用创建多个入口文件,如后台入口,admin.php;
(4)应用有自己独立的配置文件(cinfig.php)和公共的函数文件(common.php)
2.3模块(module)
(1)一个应用下有多个模块,对应着应用的不同部分,如前台、后台;
(2)每个模块都可以有完整的MVC类库,创建和管理这些类库是我们最主要的工作;
(3)每个模块都可以有独立的配置文件(cinfig.php)和公共的函数文件(common.php);
(4)如果应用简单,可使用单模块模式,'app_mutil_module' => false
2.4控制器(controller)
(1)每个模块下可以有多个控制器负责响应URL请求;
(2)每个控制器对应一个控制类,如User.php;
(3)控制器管理着模型与视图,使系统资源的调度与分配中心;
(4)ThinkPHP5的控制器不需要继承任何的基类就可以工作
2.5操作(action)
(1)操作对应着控制类中的方法,是URL请求的最小单元;
(2)任何URL请求,最终都是由控制器中的操作方法来完成;
(3)操作是整个应用的最终执行单元,是URL路由的核心与目标;
2.6模型(model)
(1)模型通常对应整个应用,因此模型通常在应用(application)目录下创建;
(2)尽管模型主要是针对数据库进行CURD操作,但也可以不操作数据库;
(3)模型通常完成实际的业务逻辑和数据封装,并返回和格式无关的数据;
(4)模型返回的数据,通常是数组(array)或者字符串(string);
(5)模型支持分层操作,例如将模型层分为逻辑层/服务层/事件层。
2.7视图(view)
(1)控制器调用模型返回的数据,是通过视图转换成不同格式输出的;
(2)视图根据请求,调用模版引擎确定是直接输出还是模版解析后再输出;
(3)视图由大量模版文件组成,这些文件对应着不通控制器中的操作方法;
(4)模板目录可以动态设置;
(5)视图最直观的理解就是由一系列的HTML文件组成;