獨立分組模式下,Action 檔案直接放在 action 目錄下,不需要 傳統的 lib 子目錄。這個細微差別曾讓作者卡關一天。
Modules/
├── base/
│ ├── action/ # 直接放 Action 檔案
│ ├── model/
│ └── ...
├── admin/
└── home/
當分組 A 需調用分組 B 的 Model/Action 時,官方 A() 方法常導致:
根因: ThinkPHP 未自動載入目標分組的類別檔案。
<?php
// 在需要跨分組調用的地方,手動 import 所需檔案
import('Action.McorpworkerAction', APP_PATH . 'Modules/base'); // 載入 base 分組 Action
import('Model.CorpworkerModel', APP_PATH . 'Modules/base'); // 載入 base 分組 Model
// 實例化時需寫完整類別名
$Mworker = new McorpworkerAction();
$worker = [
'loginname' => $_REQUEST['loginname'],
'realname' => $_REQUEST['realname'],
'pass' => mmin($_REQUEST['pass']),
];
$r = $Mworker->addfun($worker); // 成功調用 base 分組增刪改查
loadModule($module, $type, $class) 輔助函式_initialize() 中預載常用跨分組類別獨立分組雖功能強大,但需理解其自動載入機制,才能避開隱形陷阱。