tp5运行流程

image.png

index.php

image.png

start.php

image.png

base.php

image.png

base.php代码解释

define('THINK_VERSION', '5.0.10'); //版本号
define('THINK_START_TIME', microtime(true));  //应用开始时间 返回当前 Unix 时间戳和微秒数以浮点数的形式
define('THINK_START_MEM', memory_get_usage()); //  返回当前分配给你的 PHP 脚本的内存量,单位是字节(byte
define('EXT', '.php');  //后缀名为.php
define('DS', DIRECTORY_SEPARATOR); //目录分隔符,在不同操作系统目录分隔符不相同
defined('THINK_PATH') or define('THINK_PATH', __DIR__ . DS);  //THINK_PATH 路径为 ..../thinkphp/,没有定义的情况下
define('LIB_PATH', THINK_PATH . 'library' . DS); //常量值为 .../thinkphp/library/
define('CORE_PATH', LIB_PATH . 'think' . DS);//常量值为 .../thinkphp/library/think/
define('TRAIT_PATH', LIB_PATH . 'traits' . DS);//常量值为 .../thinkphp/library/traits/
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . DS); //APP_PATH没有定义的情况下 就是在public目录下  .../public/
defined('ROOT_PATH') or define('ROOT_PATH', dirname(realpath(APP_PATH)) . DS); //没有定义ROOT_PATH的情况下,默认为APP_PATH的上一级目录
defined('EXTEND_PATH') or define('EXTEND_PATH', ROOT_PATH . 'extend' . DS);//默认为ROOT_PATH目录里面的extend目录
defined('VENDOR_PATH') or define('VENDOR_PATH', ROOT_PATH . 'vendor' . DS);//默认为ROOT_PATH目录里面的vendor目录
defined('RUNTIME_PATH') or define('RUNTIME_PATH', ROOT_PATH . 'runtime' . DS);//默认为ROOT_PATH目录里的runtime目录
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log' . DS);//默认为RUNTIME_PATH下面的log目录
defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH . 'cache' . DS);//默认为RUNTIME_PATH下面的cache目录
defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH . 'temp' . DS);//默认为RUNTIME_PATH下面的temp目录
defined('CONF_PATH') or define('CONF_PATH', APP_PATH); // 配置文件目录和APP_PATH目录一样
defined('CONF_EXT') or define('CONF_EXT', EXT); // 配置文件后缀,配置文件后缀为.php
defined('ENV_PREFIX') or define('ENV_PREFIX', 'PHP_'); // 环境变量的配置前缀为PHP_
 
// 环境常量
define('IS_CLI', PHP_SAPI == 'cli' ? true : false);//IS_CLS判断是不是终端环境运行
define('IS_WIN', strpos(PHP_OS, 'WIN') !== false);//判断当前操作系统是不是windows操作系统内
 
// 载入Loader类
require CORE_PATH . 'Loader.php';//加载
 
// 加载环境变量配置文件,线判断根目录下的.env文件是不是一个文件如果,格式必须是和ini文件一样的格式,再解析ini文件,设置php.ini
if (is_file(ROOT_PATH . '.env')) {
    $env = parse_ini_file(ROOT_PATH . '.env', true);
    foreach ($env as $key => $val) {
        $name = ENV_PREFIX . strtoupper($key);
        if (is_array($val)) {
            foreach ($val as $k => $v) {
                $item = $name . '_' . strtoupper($k);
                putenv("$item=$v");//设置环境变量的值环境变量仅存活于当前请求期间。   在请求结束时环境会恢复到初始状态
            }
        } else {
            putenv("$name=$val");//设置环境变量的值环境变量仅存活于当前请求期间。   在请求结束时环境会恢复到初始状态用户仅能够修改以 PHP_ 开头的环境变量
        }
    }
}
 
// 注册自动加载
\think\Loader::register(); //加载注册
 
// 注册错误和异常处理机制
\think\Error::register();//错误注册
 
// 加载惯例配置文件
\think\Config::set(include THINK_PATH . 'convention' . EXT);//加载THINK_PATH下的convention.php文件

App::run()->send();

image.png

Ctrl+P搜索一下run方法

image.png

你可能感兴趣的:(tp5运行流程)