tp5參數綁定

關閉路由後的普通模式任然能夠經過操做方法的參數綁定、控制器和空操做等特性實現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變量
相關文章
相關標籤/搜索