框架的靈魂,類的自動載入
為什麼說是框架靈魂呢,一般框架都會有類的自動載入,當引入檔案很多的時候,就會需要用到。這一個也是很多人想去閱讀原始碼時卡住的點
原始碼閱讀
- 開啟到入口檔案
../public/index.php
會看到這一段程式碼,此程式碼載入了base.php
的核心檔案// 載入基礎檔案 [ ../public/index.php] require __DIR__ . '/../thinkphp/base.php';
- 在
base.php
中載入了一個ThinkPHP
團隊自己封裝的底層基礎類庫。這個類庫就是需要我們深入瞭解的Loader
類。在載入後立即呼叫了Loader
的register
,並且下一句做好了Error
錯誤處理// 載入Loader類 [ ../thinkphp/base.php] require __DIR__ . '/library/think/Loader.php'; // 註冊自動載入 Loader::register(); // 註冊錯誤和異常處理機制 Error::register();
- 在
Loader.php
中的 也就是register
方法中使用了spl_autoload_register
,這種自動註冊的載入方式是很多框架都會有的,比如Yii
這些。每一個框架實現的第一步都是類的自動載入
// 註冊系統自動載入 spl_autoload_register($autoload ?: 'think\\Loader::autoload', true, true);
大家加油!
上一章: 如何優雅的分析ThinkPHP框架原始碼
下一章: ThinkPHP5.1.x 框架原始碼分析 (二) [框架的靈魂] - 自動載入 spl_autoload_register 初識與瞭解