tp5運(yùn)行流程

image.png

index.php

image.png

start.php

image.png

base.php

image.png

base.php代碼解釋

define('THINK_VERSION', '5.0.10'); //版本號(hào)
define('THINK_START_TIME', microtime(true));  //應(yīng)用開始時(shí)間 返回當(dāng)前 Unix 時(shí)間戳和微秒數(shù)以浮點(diǎn)數(shù)的形式
define('THINK_START_MEM', memory_get_usage()); //  返回當(dāng)前分配給你的 PHP 腳本的內(nèi)存量,單位是字節(jié)(byte
define('EXT', '.php');  //后綴名為.php
define('DS', DIRECTORY_SEPARATOR); //目錄分隔符,在不同操作系統(tǒng)目錄分隔符不相同
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的情況下,默認(rèn)為APP_PATH的上一級(jí)目錄
defined('EXTEND_PATH') or define('EXTEND_PATH', ROOT_PATH . 'extend' . DS);//默認(rèn)為ROOT_PATH目錄里面的extend目錄
defined('VENDOR_PATH') or define('VENDOR_PATH', ROOT_PATH . 'vendor' . DS);//默認(rèn)為ROOT_PATH目錄里面的vendor目錄
defined('RUNTIME_PATH') or define('RUNTIME_PATH', ROOT_PATH . 'runtime' . DS);//默認(rèn)為ROOT_PATH目錄里的runtime目錄
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log' . DS);//默認(rèn)為RUNTIME_PATH下面的log目錄
defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH . 'cache' . DS);//默認(rèn)為RUNTIME_PATH下面的cache目錄
defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH . 'temp' . DS);//默認(rèn)為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_'); // 環(huán)境變量的配置前綴為PHP_
 
// 環(huán)境常量
define('IS_CLI', PHP_SAPI == 'cli' ? true : false);//IS_CLS判斷是不是終端環(huán)境運(yùn)行
define('IS_WIN', strpos(PHP_OS, 'WIN') !== false);//判斷當(dāng)前操作系統(tǒng)是不是windows操作系統(tǒng)內(nèi)
 
// 載入Loader類
require CORE_PATH . 'Loader.php';//加載
 
// 加載環(huán)境變量配置文件,線判斷根目錄下的.env文件是不是一個(gè)文件如果,格式必須是和ini文件一樣的格式,再解析ini文件,設(shè)置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");//設(shè)置環(huán)境變量的值環(huán)境變量?jī)H存活于當(dāng)前請(qǐng)求期間。   在請(qǐng)求結(jié)束時(shí)環(huán)境會(huì)恢復(fù)到初始狀態(tài)
            }
        } else {
            putenv("$name=$val");//設(shè)置環(huán)境變量的值環(huán)境變量?jī)H存活于當(dāng)前請(qǐng)求期間。   在請(qǐng)求結(jié)束時(shí)環(huán)境會(huì)恢復(fù)到初始狀態(tài)用戶僅能夠修改以 PHP_ 開頭的環(huán)境變量
        }
    }
}
 
// 注冊(cè)自動(dòng)加載
\think\Loader::register(); //加載注冊(cè)
 
// 注冊(cè)錯(cuò)誤和異常處理機(jī)制
\think\Error::register();//錯(cuò)誤注冊(cè)
 
// 加載慣例配置文件
\think\Config::set(include THINK_PATH . 'convention' . EXT);//加載THINK_PATH下的convention.php文件

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

image.png

Ctrl+P搜索一下run方法

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容