分層控制器

2022-03-07 22:26:21 字數 3003 閱讀 8320

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...