為什麼在ThinkPHP添加Composer自動載入無效?

來源:互聯網
上載者:User
我在 ThinkPHPindex.php添加如下:

// 添加第三方庫自動載入require './vendor/autoload.php';

但是,在使用的時候提示類不存在

但是在Controller添加require,是可以使用的。

require APP_PATH.'../vendor/autoload.php'; 

是什麼原因導致的呢?是不是類載入器只能存在一個?ThinkPHP也寫了一個,導致覆蓋了Composer的類載入器?

大家有知道的嗎?謝謝大家。

我看這個提問裡面,有個答主,說是英文文檔裡面的。

spl_autoload_register 可以很好地處理需要多個載入器的情況,這種情況下 spl_autoload_register 會按順序依次調用之前註冊過的載入器。作為對比, __autoload 因為是一個函數,所以只能被定義一次。

應該是可以存在多個的。

回複內容:

我在ThinkPHPindex.php添加如下:

// 添加第三方庫自動載入require './vendor/autoload.php';

但是,在使用的時候提示類不存在

但是在Controller添加require,是可以使用的。

require APP_PATH.'../vendor/autoload.php'; 

是什麼原因導致的呢?是不是類載入器只能存在一個?ThinkPHP也寫了一個,導致覆蓋了Composer的類載入器?

大家有知道的嗎?謝謝大家。

我看這個提問裡面,有個答主,說是英文文檔裡面的。

spl_autoload_register 可以很好地處理需要多個載入器的情況,這種情況下 spl_autoload_register 會按順序依次調用之前註冊過的載入器。作為對比, __autoload 因為是一個函數,所以只能被定義一次。

應該是可以存在多個的。

5.0版本支援Composer安裝的類庫的自動載入,你可以直接按照Composer依賴庫中的命名空間直接調用。

意思就是說,thinkphp已經把composer的那套自動載入機制合并進去了,你只需要用composer下載依賴類庫,下載好後,在需要的地方用use匯入命名空間就可以了,不需要自己再寫上require APP_PATH.'../vendor/autoload.php';了。

噗,我知道是什麼原因導致了...之前require是在ThinkPHP.php,引入之後,其實在require './ThinkPHP/ThinkPHP.php';的時候,就已經開始在執行ThinkPHP的核心代碼了,已經通過路由進入到Controller裡面了...

Wrong:

// 引入ThinkPHP入口檔案require './ThinkPHP/ThinkPHP.php';// 添加第三方庫自動載入require './vendor/autoload.php';

Right:

// 添加第三方庫自動載入require './vendor/autoload.php';// 引入ThinkPHP入口檔案require './ThinkPHP/ThinkPHP.php';
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.