<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] * * * * * ## 1 框架引導文件源代碼 > 獨立模式(/thinkphp/start.php) ~~~ namespace think; require __DIR__ . '/base.php'; require CORE_PATH . 'Loader.php'; if (is_file(ROOT_PATH . 'env' . EXT)) { $env = include ROOT_PATH . 'env' . EXT; foreach ($env as $key => $val) { $name = ENV_PREFIX . $key; putenv("$name=$val"); } } if (!defined('APP_DEBUG')) { $debug = getenv(ENV_PREFIX . 'APP_DEBUG'); define('APP_DEBUG', $debug); } $mode = require MODE_PATH . APP_MODE . EXT; if (isset($mode['namespace'])) { Loader::addNamespace($mode['namespace']); } Loader::register(); if (isset($mode['alias'])) { Loader::addMap($mode['alias']); } Error::register(); if (isset($mode['config'])) { is_array($mode['config']) ? Config::set($mode['config']) : Config::load($mode['config']); } if (APP_HOOK && isset($mode['tags'])) { Hook::import($mode['tags']); } if (APP_AUTO_RUN) { App::run(); } ~~~ > composer包模式(\vendor\topthink\framework\start.php) ~~~ defined('THINK_AUTOLOAD') or define('THINK_AUTOLOAD', getenv('THINK_AUTOLOAD') !== '0'); if (THINK_AUTOLOAD) { require_once __DIR__ . '/think.php'; } ~~~ > (\vendor\topthink\framework\think.php) ~~~ namespace think; require __DIR__ . '/base.php'; require CORE_PATH . 'Loader.php'; if (is_file(ROOT_PATH . 'env' . EXT)) { $env = include ROOT_PATH . 'env' . EXT; foreach ($env as $key => $val) { $name = ENV_PREFIX . $key; putenv("$name=$val"); } } if (!defined('APP_DEBUG')) { $debug = getenv(ENV_PREFIX . 'APP_DEBUG'); define('APP_DEBUG', $debug); } $mode = require MODE_PATH . APP_MODE . EXT; if (isset($mode['namespace'])) { Loader::addNamespace($mode['namespace']); } Loader::register(); if (isset($mode['alias'])) { Loader::addMap($mode['alias']); } Error::register(); if (isset($mode['config'])) { is_array($mode['config']) ? Config::set($mode['config']) : Config::load($mode['config']); } if (APP_HOOK && isset($mode['tags'])) { Hook::import($mode['tags']); } if (APP_AUTO_RUN) { App::run(); } ~~~ ## 2 源代碼分析 > composer包模式(\vendor\topthink\framework\start.php) `defined('THINK_AUTOLOAD') or define('THINK_AUTOLOAD', getenv('THINK_AUTOLOAD') !== '0');` 檢查加載器模式 ~~~ if (THINK_AUTOLOAD) { require_once __DIR__ . '/think.php'; } ~~~ 加載composer包的框架引導文件 * * * * * > 獨立模式(\start.php)與composer包模式公共部分(\vendor\topthink\framework\think.php) ~~~ namespace think; ~~~ 使用think命名空間 命名空間的原理見基礎原理的[php命名空間](http://www.hmoore.net/zmwtp/tp5/119446)。 ~~~ require __DIR__.'base.php'; ~~~ ### 1 加載框架全局變量文件 具體內容見框架流程的[附:全局變量文件](http://www.hmoore.net/zmwtp/tp5/119430) ~~~ require CORE_PATH.'Loader.php'; ~~~ ### 2 加載框架加載器 加載器文件的分析見框架流程的[附:自動加載器](http://www.hmoore.net/zmwtp/tp5/119431) 加載器的原理見基礎原理的[php的自動加載](http://www.hmoore.net/zmwtp/tp5/119447) ~~~ $mode = require MODE_PATH.APP_MODE.EXT; ~~~ ### 3 加載框架的模式配置文件 模式配置文件的分析見框架流程的[附:模式配置文件](http://www.hmoore.net/zmwtp/tp5/119432) 模式配置文件的操作見使用范例的[運行模式開發](http://www.hmoore.net/zmwtp/tp5/120208) `Loader::register();` ### 4 注冊自動加載器 ~~~ if (isset($mode['alias'])) { Loader::addMap($mode['alias']); } ~~~ ### 5 加載框架的模式別名文件 ~~~ Error::register() ~~~ ### 6 注冊錯誤和異常處理 錯誤和異常機制見框架流程的[附:錯誤和異常處理文件](http://www.hmoore.net/zmwtp/tp5/119433) ~~~ if (isset($mode['config'])) { is_array($mode['config']) ? Config::set($mode['config']) : Config::load($mode['config']); } ~~~ ### 7 加載模式默認全局配置文件 全局配置操作見框架流程的[附:全局配置文件](http://www.hmoore.net/zmwtp/tp5/119434) ~~~ if (APP_HOOK && isset($mode['tags'])) { Hook::import(is_array($mode['tags']) ? $mode['tags'] : include $mode['tags']); } ~~~ ### 8 注冊模式監聽回調標簽 監聽文件內容見框架流程的行為[附:監聽回調注冊文件](http://www.hmoore.net/zmwtp/tp5/119435) ~~~ if (APP_AUTO_RUN) { App::run(); } ~~~ ### 9 檢測是否啟動應用 跳轉到應用啟動App::run()運行。 ## 3 總結 框架啟動中,根據入口文件public/index.php或者全局變量文件base.php中的**APP_MODE** 加載thinkphp/mode/下面對應的**模式配置文件** 然后根據模式配置文件(默認使用thinkphp/mode/common.php)的配置初**始化模式環境** 依次為**注冊命名空間**,**注冊類別名**,**加載模式配置文件**(默認為thinkphp/convention.php),**注冊模式監聽回調** 然后根據全局變量APP_AUTO_BUILD**自動創建應用目錄** 最后**啟動應用**App::run()。 框架啟動文件,通常情況下不需要修改,其中涉及到的模式文件與運行模式開發有關,其使用思路見使用范例的[運行模式開發](http://www.hmoore.net/zmwtp/tp5/120208)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看