tp5運行流程

 

index.php

 

start.php

 

base.php

 

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

 

Ctrl+P搜索一下run方法

 



作者:id_rsa
鏈接:https://www.jianshu.com/p/4c10e6a5063e
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章