<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # thinkphp的自動加載 # 1. 首先載入loader.php文件 然后使用loader::register()進行自動加載 方法名中包含以下 ![](https://img.kancloud.cn/eb/e2/ebe21ebd3a62bc3109a6fbba1fdc94b4_607x240.png) ## 2. register()方法中 ## 第一步使用sql\_autoload\_register()自動加載類 然后獲取到composer路徑并導入componser文件下的的auto\_static.php文件 auto\_static.php文件中 定義了兩個靜態屬性:prefixLengthPsr4和prefixDirsPsr4 ### prefixLengthPsr4 = array('t' => array('think\\componser' => 15),'a' => array('app'=>4)) ### prefixDirsPsr4 = array('think\\componser' =>array(0 => '/top/think/think-installer/src'),'app' =>array(0=>'/application')) ![](https://img.kancloud.cn/97/e0/97e03c3b061f530dae4f926527bd2b7d_708x537.png) 接下來 獲取到所有的類名數組 然后從使用array\_pop()數組中彈出最后一個數組 ``` <pre class="calibre13">``` <span class="token4">"Composer\\Autoload\\ComposerStaticInit25f893be97b63d60134b87b9c2e8987a"</span> ``` ``` ![](https://img.kancloud.cn/69/a0/69a0afadd3bc756435b4fd092ddecb30_664x102.png) 使用property\_exists() 檢查遍歷的字符串是否在 上面的彈出的類數組中 ![](https://img.kancloud.cn/b6/f0/b6f0eec3caf161ed1beff35519bbfed5_923x201.png) ![](https://img.kancloud.cn/af/a5/afa559ee63785e1fe9355ce5a0cf2c2e_647x117.png) ![](https://img.kancloud.cn/68/81/6881b9ebb253f6e85243fedf930e3adb_1586x384.png) ## 3. 注冊命名空間: ### 調用addNamespace() 參數是一個數組 參數是: array(2) { \["think"\] =>string(57) "C:\\Users\\Administrator\\Desktop\\tp5\\thinkphp\\library\\think" \["traits"\] =>string(58) "C:\\Users\\Administrator\\Desktop\\tp5\\thinkphp\\library\\traits"} ![](https://img.kancloud.cn/7b/bc/7bbcfc3d81368a8c1f7257ef2171a84c_793x164.png) 在addNamespace中 又調用了addPsr4()參數是(上面的數組)并執行遍歷由原來的二維數組 遍歷成結果是一維數組 ![](https://img.kancloud.cn/81/70/81704329c678a2866f09db752c3c1e69_971x342.png) addPsr4的方法作用是添加Psr4空間 因為傳過來的參數不為空 所以走流程如下圖所示: ![](https://img.kancloud.cn/32/6f/326f5b503fee0fe7ec44bf1bdc832b1f_983x723.png) 因為沒有找到這個值 所以走這個邏輯: ![](https://img.kancloud.cn/5d/c0/5dc01953d590b7d8ad7af4e0aeec9189_815x299.png) 最后就添加到了Psr4空間中 ![](https://img.kancloud.cn/9c/b4/9cb43d23b833fa16ab99643cc45ca471_770x95.png) ![](https://img.kancloud.cn/04/b1/04b12da9e23d1541fcbfd321686ce77b_763x476.png) ## 4. 加載類庫映射文件 ### 調用addClassMap() 因為已經使用命令創建了類庫映射文件 所以走箭頭邏輯 ![](https://img.kancloud.cn/59/cc/59cc8ebcb7f7f1ad781581d7d48ca7ca_492x61.png) ![](https://img.kancloud.cn/de/98/de983fb43e9b1f11a430d6810cc93e4e_963x272.png) addClassMap()參數是剛生成的classMap.php文件內容 把類庫文件內容 賦值給**self::$classMap** ### 5. 自動加載extend目錄 ![](https://img.kancloud.cn/19/fc/19fcb54816627745b44eada422b93765_638x105.png) 調用addAutoLoadDir()參數是extend的路徑 在addAutoLoadDir中 把路徑賦值給 **self::$fallbackDirsPsr4** ![](https://img.kancloud.cn/e5/06/e506967c42e6f36f13256870c7c57554_543x151.png) # -----------分割線----------- ## 注冊錯誤和異常處理機制 ![](https://img.kancloud.cn/1b/5d/1b5dfdd3bc56aebfdeb9aac42838e20c_643x235.png) ### 1。Error類沒有引用直接使用了 因此就出發了自動加載機制 就會自動調用Loader.php文件中的spl\_autoload\_register() ![](https://img.kancloud.cn/4c/9d/4c9d9953c29335715c224d0ea139b0bc_801x108.png) 就會調用autoload方法 ![](https://img.kancloud.cn/81/6f/816f09bf036b923a6e81d24817e6af98_811x515.png) 在autoload中 先查看是否有別名 沒別名就調用findFile()去類庫文件查找 因為Error在類庫文件中找到了 如果找不到就去Psr-4中尋找 然后去查找 PSR-4 fallback dirs 然后查找 PSR-0 然后查找 PSR-0 fallback dirs一路查找 如果還沒找到 return **self::$classMap\[$class\]** = false; ![](https://img.kancloud.cn/08/f3/08f3e7d5e220b8c673e5755ae8b87f85_779x520.png)
                  <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>

                              哎呀哎呀视频在线观看