以下調用方法自選一種,哪種好玩你就用哪種。
第一種:助手函數調用
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不僅僅是簡單的一個封裝,而是可以對以前寫的方法全部使用靜態調用,這樣可以避免實例化,直接使用其中的方法。