thinkphp没有start.php,Thinkphp 5.x 框架引导 start.php

跟着分析的thinkphp版本是:5.0.24

1e965ddbc2e5e3207a5e1d7f98172979.png

首先包含了 start.php

0f3bb9b61189cf37e0bc6ef7fc53f9d9.png

跟进base.php,该文件主要实现的是 定义了一些常量 和 引入了 Loader类 来实现自动加载

7ed417af127cd129a5624b1c617605d1.png

继续跟进Loader.php中,还没进行任何操作,也没有构造方法,包含完了之后加载了一些配置文件就开始执行 三个方法

7a2a09ffe30857c6b890d12547934e7d.png

c7bdd4228ce8f22ac49fd25c453afe15.png

首先执行的第一个是:注册自动加载

// 注册自动加载

\think\Loader::register();

register会使用 spl_autoload_register 该函数会使用 think\Loader::autoload 去注册自动加载

16527aa65d05c8e0f6c689d52fec582e.png

然后走下面 Composer 自动加载支持,registerComposerLoader该方法 自动去加载一些用到的类

6c9cb198aac6a6505b6426a00d1b5528.png

继续走它会先定义 命名空间

9634866ba2f654619610b75e7355b6bc.png

self::addNamespace([

'think' => LIB_PATH . 'think' . DS,

'behavior' => LIB_PATH . 'behavior' . DS,

'traits' => LIB_PATH . 'traits' . DS,

]);

再加载类库映射文件

if (is_file(RUNTIME_PATH . 'classmap' . EXT)) {

self::addClassMap(__include_file(RUNTIME_PATH . 'classmap' . EXT));

}

这里走完了之后就出来了,继续走 注册错误和异常处理机制

// 注册错误和异常处理机制

\think\Error::register();

继续跟进

854faee2e52a87c0b8f8b1733072c9cc.png

这里调用的是\think\Error不存在,所以会让 think\Loader::autoload 去自动加载,那么就会先进autoload方法中,其中的步骤就是 检测命名空间别名 ,然后去找你要实例化的类文件是否存在,存在的话则去包含该文件

f7205e1ea30ee69c706c20c18783c538.png

包含完了之后开始 register 方法

public static function register()

{

error_reporting(E_ALL); // 开启所有的错误报告

set_error_handler([__CLASS__, 'appError']);

set_exception_handler([__CLASS__, 'appException']);

register_shutdown_function([__CLASS__, 'appShutdown']);

}

将错误、异常、中止时分别交由 appError 、appException 、 appShutdown 处理,这三个函数在 thinkphp/library/think/Error.php 中定义

2d4201d4490e9e40f369241d2c003f52.png

接着加载配置文件

955d1e7a84ffa1d28bcc4bc92bac5a82.png

最后跳出 base.php中 然后开始 App:run()->send(),这个自己分开记录了!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值