關閉路由後的普通模式任然能夠經過操做方法的參數綁定、控制器和空操做等特性實現url地址的簡化php
參數綁定(默認是按名稱成對解析,):thinkphp
namespace app\index\Controller; class Blog { public function read($id) { return 'id='.$id; } public function archive($year='2016',$month='01') { return 'year='.$year.'&month='.$month; } }
//上例對應的URL訪問地址分別是架構
http://serverName/index.php/index/blog/read/id/5app
http://serverName/index.php/index/blog/archive/year/2016/month/06函數
輸出結果:
id=5
year=2016&month=06post
按照順序解析變量須要修改配置文件的url_param_type參數this
// 按照順序解析變量 'url_param_type' => 1,
上面的例子修改下訪問url地址url
//修改url中year和month參數值的順序 http://serverName/index.php/index/blog/archive/06/2016 輸出結果: year=06&month=2016
按順序綁定參數,操做方法的參數只能使用URL pathinfo
變量,而不能使用get
或者post
變量spa
參數綁定有一個特例,操做方法中定義有Request
對象做爲參數,不管參數位置在哪裏,都會自動注入,而不須要進行參數綁定code
namespace app\index\Controller; use think\Request class Blog { public function demo1() { $year=Request:instance()->param('year'); $month=Request:instance()->param('month'); $all=Request:instance()->param();//獲取所有參數變量 $get=Request:instance()->get();//獲取url?後的參數變量(獲取到year變量2018) $rt=Request:instance()->route();//獲取路徑後面的參數變量(只獲取到id變量123) $post=Request:instance()->post();//獲取post參數變量(只獲取到age變量18) } public function demo2(){ //input獲取url變量 同tp3的I() $id=input('get.id') } public function demo3(Request $request){ //依賴注入 $all=$request->param(); } } http://localhost/demo1/123?year=2018(month變量爲post傳遞)
架構方法(構造方法)參數綁定(V5.0.1)
當前請求的路由變量能夠自動綁定到析構函數的參數,
namespace app\index\Controller; class Blog { protected $name; public function __construct($name = null) { $this->name = $name; } } //若是訪問http://localhost/index/index/index/name/thinkphp //當前請求路由變量name,則thinkphp會自動傳入析構方法裏的name變量