thinkphp引入了分層控制器的概念,通過url訪問的控制器為訪問控制器層(controller)或者主控制器,訪問控制器是由
類負責呼叫和例項化的,無需手動例項化。
[ 模組/控制器/操作 ],其實也就是執行某個控制器類的某個操作方法,下面是乙個示例:
namespace
\index
\controller
;class
blog
public
function
add()
public
function
edit
($id)}
當前定義的主控制器位於index模組下面,所以當訪問不同的url位址的頁面輸出如下:
//servername/index/blog/index // 輸出 index
//servername/index/blog/add // 輸出 add
//servername/index/blog/edit/id/5 // 輸出 edit:5
新版的控制器可以不需要繼承任何基類,當然,你可以定義乙個公共的控制器基礎類來被繼承,也可以通過控制器擴充套件來完成不同的功能(例如restful實現)。如果不經過路由訪問的話,url中的控制器名會首先強制轉為小寫,然後再解析為駝峰法例項化該控制器。
除了訪問控制器外,我們還可以定義其他分層控制器類,這些分層控制器是不能夠被url訪問直接呼叫到的,只能在訪問控制器、模型類的內部,或者檢視模板檔案中進行呼叫。
例如,我們定義blog事件控制器如下:
namespace
\index
\event
;class
blog
public
function
update
($id
)
public
function
delete
($id)}
定義完成後,就可以用下面的方式例項化並呼叫方法了:
$event
= \think\loader::controller(
'blog'
, 'event'
);echo
$event
->update(
5);
// 輸出 update:5
echo
$event
->delete(
5);
// 輸出 delete:5
為了方便呼叫,系統提供了controller助手函式直接例項化多層控制器
,例如:
$event
= controller(
'blog'
, 'event'
);echo
$event
->update(
5);
// 輸出 update:5
echo
$event
->delete(
5);
// 輸出 delete:5
支援跨模組呼叫,例如:
$event
= controller(
'admin/blog'
, 'event'
);echo
$event
->update(
5);
// 輸出 update:5
表示例項化admin模組的blog控制器類,並執行update方法。
除了例項化分層控制器外,還可以直接呼叫分層控制器類的某個方法,例如:
echo
\think\loader::action(
'blog/update'
, ['id'
=>
5],
'event'
); // 輸出 update:5
也可以使用助手函式
action
實現相同的功能:
echo
action(
'blog/update'
, ['id'
=>
5],
'event'
); // 輸出 update:5
利用分層控制器的機制,我們可以用來實現
widget
(其實就是在模板中呼叫分層控制器),例如:
定義index\widget\blog
控制器類如下:
namespace
\index
\widget
;class
blog
public
function
left
()
public
function
menu
($name)}
我們在模板檔案中就可以直接呼叫
分層控制器了,
使用助手函式
action
框架還提供了
widget
函式用於簡化widget
控制器的呼叫,
可以直接使用助手函式
widget
think php 分層控制器
servername index blog index 輸出 index servername index blog add 輸出 add servername index blog edit id 5 輸出 edit 5 新版的控制器可以不需要繼承任何基類,當然,你可以定義乙個公共的控制器基礎類來...
jmeter控制器 交替控制器
1.簡單使用 如下圖,設定1個執行緒,執行3次 執行結果如下圖 2.巢狀乙個控制器,不勾選忽略子控制器 測試計畫如下圖 巢狀乙個迴圈控制器,迴圈次數設定3次 執行緒組設定1個執行緒,執行5次 執行結果如下圖 總結 交替執行到迴圈控制器時,迴圈執行結束後,在進行下一次的交替。3.巢狀乙個控制器,勾選忽...
子控制器 和 父控制器
1 新增子控制器很簡單 分兩步 乙個是 view 乙個是 controller 1 self addchildviewcontroller tablectr 2 self.view addsubview tablectr.view 最後不要忘了加一行 tablectr didmovetoparent...