架构 ThinkPHP5文档学习笔记--

文章目录二、生命周期 三、入口文件四、模块设计
一、架构总览
.0应用基于MVC(模型-视图-控制器)的方式来组织 。
5.0的URL访问受路由决定 , 如果关闭路由或者没有匹配路由的情况下 , 则是基于:
(或者其它应用入口文件)/模块/控制器/操作/参数/值…
// 是否开启路由'url_route_on'=> true
1.1、有关常用的一些概念 入口文件
程序的入口 , 只有通过本模块 , 才可以访问到 , 对应要访问的主程序;
在php中通过有index.php(前台应用程序入口)、还有后台程序入口(自动安装后会修改为随机名)、还有可以自定义 。
应用
应用在中是一个管理系统架构及生命周期的对象 , 由系统中的//think/App.php完成 , 通常在入口文件中调用和执行 。
// [ 应用入口文件 ]// 定义应用目录//__DIR__:当前文件所在的文件夹 。define('APP_PATH', __DIR__ . '/../application/');// 判断是否安装if (!is_file(APP_PATH . 'admin/command/Install/install.lock')) {header("location:./install.php");exit;}// 加载框架引导文件require __DIR__ . '/../thinkphp/start.php';
通过入口文件(index.php)然后入口文件加载框架的启动类(start.php)
start.php// ThinkPHP 引导文件// 1. 加载基础文件require __DIR__ . '/base.php';// 2. 执行应用App::run()->send();
启动主启动类 , 将信息发送到客户端页面;
应用具有自己独立的配置文件、公共(函数)文件 。模块
一个典型的应用是由多个模块组成的 , 这些模块通常都是应用目录下面的一个子目录 , 每个模块都有自己独立的配置文件、公共文件和类库文件 。
// 是否支持多模块'app_multi_module'=> true
控制器
事实上 , 5.0中控制器是可以被跳过的 , 通过路由我们可以直接把请求调度到某个模型或者其他的类进行处理 。
5.0的控制器类比较灵活 , 可以无需继承任何基础类库:
namespace app\index\controller;class Index {public function index(){return 'hello,thinkphp!';}}
操作
一个控制器包含多个操作(方法) , 操作方法是一个URL访问的最小单元 。
public function hello($name){return 'Hello,'.$name;}
操作方法可以不使用任何参数 , 如果定义了一个非可选参数 , 则该参数必须通过用户请求传入 , 如果是URL请求 , 则通常是$_GET或者$_POST方式传入 。
模型
和数据库交互 , 处理业务逻辑 。
模型类并不一定要访问数据库 , 而且在5.0的架构设计中 , 只有进行实际的数据库查询操作的时候 , 才会进行数据库的连接 , 是真正的惰性连接 。
的模型层支持多层设计 , 你可以对模型层进行更细化的设计和分工 , 例如把模型层分为逻辑层/服务层/事件层等等 。
视图
控制器调用模型类后返回的数据通过视图组装成不同格式的输出 。视图根据不同的需求 , 来决定调用模板引擎进行内容解析后输出还是直接输出 。
视图通常会有一系列的模板文件对应不同的控制器和操作方法 , 并且支持动态设置模板目录 。