Laravel 專案常需引入自定義類別或輔助函數,本文介紹兩種標準載入方式,並分析優缺點助你選擇最適合專案的方案。
app/libraries/class/MyTest.php
步驟 2:註冊命名空間目錄
// app/start/global.php ClassLoader::addDirectories(array( app_path().'/commands', app_path().'/controllers', app_path().'/models', app_path().'/database/seeds', app_path().'/libraries/class', // 新增此行 ));步驟 3:服務容器解析使用
class HomeController extends BaseController { public function index() { $obj = App::make('mytest'); // 小寫類名 echo $obj->test(); } }方案二:自定義輔助函數
建立函數檔案
app/libraries/function/helper.php載入方式 A:全域前置過濾器(推薦)
// app/filters.php App::before(function($request) { require app_path().'/libraries/function/helper.php'; });載入方式 B:Composer 自動載入
// app/bootstrap/autoload.php require __DIR__.'/../app/functions.php'; // 或指定檔案方案比較與建議
| 維度 | ClassLoader 註冊目錄 | filters.php require | Composer autoload |
|---|---|---|---|
| 適用對象 | 類別 | 函數 | 函數/類別 |
| 載入時機 | 按需解析 | 每請求執行 | 專案啟動 |
| 效能 | 最佳(懶加載) | 略有開銷 | 最佳(編譯優化) |
| 維護性 | 需手動管理目錄 | 集中管理 | 標準化、推薦 |
app/libraries + ClassLoader,或直接放入 app/services 等既有 PSR-4 目錄composer.json 設定:"autoload": {
"files": ["app/helpers.php"]
}
執行 composer dump-autoload 後全專案自動可用,無需額外 require,效能最佳且符合現代 PHP 規範。