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