ThinkPHP 專案分組機制允許在單一專案下劃分多個應用群組(如前台 Home、後台 Admin、API User),共享核心 Model、設定與資源,又能各自擁有獨立的控制器、視圖、設定檔與語言包。本文詳細說明啟用設定、目錄結構、個性化配置與 URL 存取方式。
<?php
return [
'APP_GROUP_LIST' => 'Home,Admin,User,Blog', // 必填,啟用分組
'DEFAULT_GROUP' => 'Home', // 預設群組
'APP_GROUP_DEPR' => '.', // 群組分隔符 (用於 U 函數、路由)
'TMPL_FILE_DEPR' => '/', // 模板檔案分隔符
'VAR_GROUP' => 'g', // URL 參數名稱 (如 ?g=Admin)
];
?>
App/
Conf/ # 共用設定
config.php
Home/ # Home 群組 (首字母大寫)
Conf/
config.php # Home 專屬設定 (覆蓋共用設定)
Lib/
Action/ # Home 控制器
Tpl/ # Home 視圖
Admin/
Conf/config.php
Lib/Action/
Tpl/
User/ ...
Blog/ ...
Common/ # 共用函數、類別
Runtime/ # 快取、日誌
Public/ # 靜態資源
當訪問 Admin 群組時,系統自動載入 App/Admin/Conf/config.php 並與 App/Conf/config.php 合併(群組設定優先覆蓋)。適用於:
| 方式 | 範例 | 說明 |
|---|---|---|
| PATHINFO | /index.php/Admin/Index/index | 標準模式,需 mod_rewrite 隱藏 index.php |
| 參數模式 | /index.php?g=Admin&m=Index&a=index | 相容模式,VAR_GROUP=g |
| U 函數生成 | U('Admin/Index/index') | 自動依 APP_GROUP_DEPR 生成 |
預設 / 產生 Tpl/Admin/Index/index.html;設為 _ 則為 Tpl/Admin/Index_index.html,減少目錄層級。同樣影響語言包檔案命名。
A('Admin/User')->listUsers() (ThinkPHP 3.2+)App/Common/Model/ 或 App/Lib/Model/。