TP6獲取控制器名,方法名

以下調用方法自選一種,哪種好玩你就用哪種。

第一種:助手函數調用
Request()->controller() //獲取控制器名
Request()->action() //獲取方法名
第二種:門面函數facade的靜態調用
\think\facade\Request::action()
\think\facade\Request::controller()
第三種:app類的靜態調用,注意此App爲 use think\facade\App;
use think\facade\App;
use think\Facade;
 
(App::class)::make('request')->action();    
或者:  App::make('request')->action() 
或者:  Facade::make('request')->action()
或者:  Facade::createFacade('request')->action()

此種方法最終調用了容器類Container,所以說容器類是所有方法調用的源頭,容器是管理依賴注入的工具,這個是tp6的精華。

第四種:app類非靜態調用
 use think\App;
 (new App())->make('request')->action();
第五種:容器類直接調用
Container::getInstance()->make('request')->action();
第六種:超級助手函數app()調用:
app('request')->action();
或使用下面的方式(以下方式即將被棄用)
$request= \think\Request::instance();
$module = $request->module();//模塊名
$controller = $request->controller();//控制器名
$action = $request->action()//方法名

另外附PHP獲取類中的所有方法。 在當前類中直接使用:

$A = get_class_methods($this); 
halt($A); 

我們打印一下,發現返回的是一個數組,裏面包含了當前類的,父類的,父父類的所有方法。 是方法的列表集。
在tp6中使用facade方式來靜態調用裏面的方法都是可以的,所以facade不僅僅是簡單的一個封裝,而是可以對以前寫的方法全部使用靜態調用,這樣可以避免實例化,直接使用其中的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章