tp5.1框架初始化流程学习
程序员文章站
2022-07-14 10:17:00
...
tp5.1框架初始化流程学习
tp5.1的入口文件(public/index.php)
主要完成框架的初始化与应用启动,等待用户请求,然后进行调度处理
入口文件代码
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <aaa@qq.com>
// +----------------------------------------------------------------------
// [ 应用入口文件 ]
namespace think;
// 加载基础文件
require __DIR__ . '/../thinkphp/base.php';
// 支持事先使用静态方法设置Request对象和Config对象
// 执行应用并响应
Container::get('app')->run()->send();
流程图
初始化之前的操作
在入口文件引入了base.php,该文件负责的是基础环境的搭建
在base文件中引入了Loader类(自动加载类),调用了Error类
base.php的作用
引入Loader类,实现注册自动加载
使用Error类实现注册错误和异常处理机制
实现日志接口(这块具体还不是太理解)
注册核心类到容器
注册核心类的静态代理
注册类库别名
加载惯例配置文件
配置文件
加载composer的自动加载文件
Loader.php的作用
- 注册系统自动加载机制
- 实现Composer自动加载
- 注册think和traits命名空间
- 加载类库映射文件
- 自动加载extend目录
初始化的操作
通过容器类的get方法获取app.php的实例,调用app的run()方法实现应用的初始化和运行
run()方法会调用initialize方法
initialize方法——加载与应用相关的各类配置信息,与此同时调用init方法
init方法——初始化应用的根目录,并加载根目录下的配置文件
相关配置文件
行为扩展 /app/tags.php.
公共内容文件 /app/common.php
助手函数文件 /app/helper.php
容器对象注册文件 /app/provider.php
读取配置目录下的配置文件 /app/config/文件名.php。
注
- PHP_OS——获取当前操作系统名称
- DIRECTORY_SEPARATOR——PHP加载的文件分隔符
推荐阅读