美文网首页
tp5运行流程

tp5运行流程

作者: id_rsa | 来源:发表于2019-03-03 14:22 被阅读0次
    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运行流程

          本文链接:https://www.haomeiwen.com/subject/jnmpuqtx.html