ThinkPHP import() 用於載入類別庫,支援命名空間風格路徑,自動對應檔案系統路徑,是框架自動載入的核心入口。
| 語法 | 前綴含義 | 基礎路徑 | 範例:import('Test.Util') |
|---|---|---|---|
@.Test.Util | 當前專案 | APP_PATH . 'Lib/' | app/Lib/Test/Util.class.php |
Think.Test.Util | 框架核心 | THINK_PATH . 'Lib/' | thinkphp/Lib/Test/Util.class.php |
ORG.Test.Util | 第三方公共庫 | THINK_PATH . 'Extend/Library/' | thinkphp/Extend/Library/ORG/Test/Util.class.php |
COM.Test.Util | 企業公共庫 | THINK_PATH . 'Extend/Library/' | thinkphp/Extend/Library/COM/Test/Util.class.php |
Admin.Test.Util | 其他分組專案 | APP_PATH . '../Admin/Lib/' | app/../Admin/Lib/Test/Util.class.php |
@.(最常用)// 載入 app/Lib/Tool/ArrayTool.class.php
import('@.Tool.ArrayTool');
// 載入 app/Lib/Vendor/PHPExcel.php(無命名空間類別)
import('@.Vendor.PHPExcel', EXT); // 第二參數指定副檔名
Think.// 載入 thinkphp/Lib/ORG/Util/Page.class.php
import('Think.ORG.Util.Page');
// 載入 thinkphp/Lib/Template/ThinkTemplate.class.php
import('Think.Template.ThinkTemplate');
ORG. / COM.// 載入 thinkphp/Extend/Library/ORG/Net/Http.class.php
import('ORG.Net.Http');
// 載入 thinkphp/Extend/Library/COM/Alipay/AlipaySubmit.class.php
import('COM.Alipay.AlipaySubmit');
// 假設專案結構:apps/Admin/Lib/Model/UserModel.class.php
import('Admin.Model.User');
步驟 1:建立 Conf/alias.php
return [
'Page' => LIB_PATH . 'Common/Page.class.php',
'Excel' => LIB_PATH . 'Vendor/PHPExcel/PHPExcel.php',
'WechatSDK' => VENDOR_PATH . 'wechat/sdk/Wechat.php',
];
步驟 2:直接使用別名
import('Page'); // 載入分頁類
import('Excel'); // 載入 PHPExcel
import('WechatSDK'); // 載入微信 SDK
// Common/common.php
function __autoload($class) {
// 符合命名規範的類別自動 import
if (strpos($class, '\\') === false) {
import('@.' . $class);
}
}
spl_autoload_register('__autoload');
// composer.json
{
"autoload": {
"psr-4": {
"app\\": "app/",
"extend\\": "extend/"
}
}
}
執行 composer dump-autoload 後,直接 use app\Tool\ArrayTool; 即可,無需 import()。
| 錯誤 | 原因 | 解決 |
|---|---|---|
| Class 'XXX' not found | 路徑、命名空間、檔案名稱不符 | 檢查大小寫、目錄結構、副檔名 .class.php |
| Cannot redeclare class | 重複載入 | 使用 import() 內建防重複、或改用 Composer |
| Vendor 類別無法載入 | 不符合命名規範 | 指定副檔名 import('@.Vendor.Class', '.php') 或改用 Composer |
import()、APP_PATH、THINK_PATH 常量import(),全面採用 Composer PSR-4 自動載入import(),強制 PSR-4 + 命名空間