TP5類的自動加載
學會了作用就是:可以在框架中任意地方創建類,並調用
類的自動加載代碼原理這裏就說不清了,我興趣的可以看看慕課網singwa老師的課:
https://coding.imooc.com/class/331.html
下面直接介紹如何使用:
類的加載文件路徑:項目根目錄\thinkphp\library\think\Loader.php
流程:index.php(入口文件)-》base.php-》Loader.php
1.如果關係到命名空間調用一個類:
在Loader.php文件中的register()方法裏對應的地方加入這個類的"首目錄"
$rootPath = self::getRootPath();//獲取根目錄
// 註冊命名空間定義(鍵是命名空間,鍵值是命名空間路徑)
self::addNamespace([
'think' => __DIR__,
'traits' => dirname(__DIR__) . DIRECTORY_SEPARATOR . 'traits',
'script' => $rootPath.'script',
]);
這裏引入了根目錄下的"script"目錄,那麼則可調用"script"目錄裏的類或"script"目錄裏的文件夾下的類
2.如果不關係到命名空間,只關係到目錄調用一個類:
這種方法也適用於需要命名空間的,調用一個類的情況
在Loader.php文件中的register()方法裏對應的地方加入這個類的"首目錄"
// 自動加載extend目錄(命名空間不需再加這個目錄,直接下面的文件夾開頭則行,必須是文件夾下類)
self::addAutoLoadDir($rootPath . 'extend');
self::addAutoLoadDir($rootPath . 'script');
self::addAutoLoadDir($rootPath.'thinkphp'.DIRECTORY_SEPARATOR.'library'.DIRECTORY_SEPARATOR.'ali');//這樣不行
self::addAutoLoadDir($rootPath.'thinkphp'.DIRECTORY_SEPARATOR.'library');//這樣纔行
這裏引入了根目錄下的"script"目錄,那麼則可以調用裏面的類,也可以用命名調用