TP框架中跨控制器呼叫操作方法

2021-10-06 00:19:45 字數 1301 閱讀 8715

最近在改一些老的專案,在優化**中需要跨控制器呼叫一些方法,以前都是例項化類然後呼叫,現在才發現有更好的更簡單的方法,因此記錄下來。

我要介紹的就是下面的a函式:

thinkphp中的a 函式(thinkphp3.2.3版本)

a函式是tp中例項化控制器的乙個快捷函式,它的語法結構如下:

a(『模組/控制器』)

//當控制器層名稱不是 controller 時須這樣寫

a(『模組/控制器』,『控制器層名稱』)

如果要呼叫的控制器就在當前模組下,那麼也可以按如下語法寫:

a(『控制器』)

//或者這樣

a(『控制器』,『控制器層名稱』)

此時系統會自動例項化 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事件控制器

katex parse error: undefined control sequence: \home at position 12: user = new \̲h̲o̲m̲e̲\event\usereven…blog = new \admin\event\blogevent();

TP的空操作 空控制器 跨控制器呼叫

系統在找不到請求的方法的時候,會定位到 empty 方法處理,利用這個機制,我們可以對使用者請求的不存在的所有操作進行統一。當系統找不到控制器,會定位到空控制器上emptycontroller managercontroller中的方法 public function managertest1 其他...

ThinkPHP跨控制器呼叫方法

跨控制器呼叫方法 1.先造物件,再呼叫裡面的方法 sc new home controller indexcontroller 用絕對路徑找 echo sc shuchu 2.sc new indexcontroller 用相對路徑 echo sc shuchu 還可以使用thingkphp中的快捷...

ThinkPHP跨控制器呼叫方法

跨控制器呼叫方法 1.先造物件,再呼叫裡面的方法 sc new home controller indexcontroller 用絕對路徑找 echo sc shuchu 2.sc new indexcontroller 用相對路徑 echo sc shuchu 還可以使用thingkphp中的快捷...