• Thinkphp 5.x 框架引导 start.php


    跟着分析的thinkphp版本是:5.0.24

    首先包含了 start.php

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

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

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

    // 注册自动加载
    	hinkLoader::register();
    

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

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

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

            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));
    }
    

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

    // 注册错误和异常处理机制
    	hinkError::register();
    

    继续跟进

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

    包含完了之后开始 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 中定义

    接着加载配置文件

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

    参考文章:https://y4er.com/post/thinkphp5-source-read/#框架引导startphp

  • 相关阅读:
    一般索引
    微信小程序扫码
    微信小程序
    PHPStudy设置局域网访问
    phpstudy
    爱番番
    织梦栏目url的seo处理
    织梦dedecms网站迁移搬家图文教程
    打开存储过程中的代码目录(转)
    正在载入
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/12562960.html
Copyright © 2020-2023  润新知