ThinkPHP5.1.x 框架原始碼分析 (一) [框架的靈魂] - 類的自動載入初始

AutumnWind發表於2019-09-03

框架的靈魂,類的自動載入

為什麼說是框架靈魂呢,一般框架都會有類的自動載入,當引入檔案很多的時候,就會需要用到。這一個也是很多人想去閱讀原始碼時卡住的點

原始碼閱讀

  1. 開啟到入口檔案 ../public/index.php 會看到這一段程式碼,此程式碼載入了 base.php 的核心檔案
    // 載入基礎檔案 [ ../public/index.php]
    require __DIR__ . '/../thinkphp/base.php';
  2. base.php 中載入了一個 ThinkPHP團隊自己封裝的底層基礎類庫。這個類庫就是需要我們深入瞭解的 Loader 類。在載入後立即呼叫了Loaderregister,並且下一句做好了Error錯誤處理
    // 載入Loader類 [ ../thinkphp/base.php]
    require __DIR__ . '/library/think/Loader.php';
    // 註冊自動載入
    Loader::register();
    // 註冊錯誤和異常處理機制
    Error::register();
  3. Loader.php 中的 也就是 register 方法中使用了 spl_autoload_register,這種自動註冊的載入方式是很多框架都會有的,比如 Yii 這些。每一個框架實現的第一步都是類的自動載入
    // 註冊系統自動載入
    spl_autoload_register($autoload ?: 'think\\Loader::autoload', true, true);

    大家加油!
    上一章: 如何優雅的分析ThinkPHP框架原始碼
    下一章: ThinkPHP5.1.x 框架原始碼分析 (二) [框架的靈魂] - 自動載入 spl_autoload_register 初識與瞭解

相關文章