A函數是TP中實例化控制器的一個快捷函數,它的語法結構如下:
A('模塊/控制器') //當控制器層名稱不是 Controller 時須這樣寫 A('模塊/控制器','控制器層名稱')
如果要調用的控制器就在當前模塊下,那么也可以按如下語法寫:
A('控制器') //或者這樣 A('控制器','控制器層名稱')
通常情況下訪問控制器的實例化是自動完成的,系統會根據URL地址解析出訪問的控制器名稱自動實例化,並且調用相關的操作方法。比如我們輸入下列URL地址:
http://serverName/Home/Index/index
此時系統會自動實例化 Home/Controller/IndexController.class.php 中的 IndexController 類。但如果你需要跨控制器調用的話必須先實例化才能調用:
//假設當前在Home模塊的Index控制器下
// 實例化Home模塊的User控制器 $User = new \Home\Controller\UserController(); // 實例化Admin模塊的Blog控制器 $Blog = new \Admin\Controller\BlogController();
以上代碼如果用 A 函數的話可以簡化如下:
$User = A('User'); //因為 User 控制器就在當前模塊 Home 下,所以模塊名稱可以省略 $Blog = A('Admin/Blog');
默認情況下,A方法實例化的是默認控制器層(Controller),如果你要實例化其他的分層控制器的話(比如 Event),可以使用:
// 假設當前模塊是Home模塊 // 實例化Event控制器 $User = A('User','Event'); $Blog = A('Admin/Blog','Event');
上面的代碼等效於:
// 實例化Home模塊的User事件控制器 $User = new \Home\Event\UserEvent(); // 實例化Admin模塊的Blog事件控制器 $Blog = new \Admin\Event\BlogEvent();