think php 分層控制器

2021-08-21 07:46:23 字數 3250 閱讀 5669

://servername/index/blog/index // 輸出 index

://servername/index/blog/add // 輸出 add

://servername/index/blog/edit/id/5 // 輸出 edit:5

新版的控制器可以不需要繼承任何基類,當然,你可以定義乙個公共的控制器基礎類來被繼承,也可以通過控制器擴充套件來完成不同的功能(例如restful實現)。

如果不經過路由訪問的話,url中的控制器名會首先強制轉為小寫,然後再解析為駝峰法例項化該控制器。

除了訪問控制器外,我們還可以定義其他分層控制器類,這些分層控制器是不能夠被url訪問直接呼叫到的,只能在訪問控制器、模型類的內部,或者檢視模板檔案中進行呼叫。

例如,我們定義blog事件控制器如下:

namespace

;

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

;

class

blog

public

function

left

()

public

function

menu

($name

)

}

框架還提供了widget函式用於簡化widget控制器的呼叫,

可以直接使用助手函式widget

分層控制器

thinkphp引入了分層控制器的概念,通過url訪問的控制器為訪問控制器層 controller 或者主控制器,訪問控制器是由 類負責呼叫和例項化的,無需手動例項化。模組 控制器 操作 其實也就是執行某個控制器類的某個操作方法,下面是乙個示例 namespace index controller ...

ThinkPHP控制器分級

注 請不要修改thinkphp慣例配置檔案,如果要覆蓋慣例配置的值,可在應用配置檔案中設定和慣例不符的配置項 慣例配置檔案路徑 thinkphp conf convention.php 在應用配置檔案config.php中修改一下內容即可實現控制器分級 例 在 home controller下建立資...

ThinkPHP 控制器(三)

id get id name post name value session var name cookie name file server php self ps 沒有統一的安全處理機制,後期調整會比較麻煩 i 變數型別.變數名 預設值 過濾方法 獲取 get id echo i get.id ...