uri是CI_Uri類型對象,經過$this->uri獲取,用於處理與URL工做,包括從URL中獲取參數等php
經過URL傳遞get參數每每使用這種形式:http://localhost/study_codeIgniter/index.php/index/index2?id=5,但在PHP框架中,基本使用pathinfo,形式像這樣:協議://域名/控制器/方法名/參數名1/參數值1/參數名2/參數值2,例如這個URI:http://localhost/study_codeIgniter/index.php/index/test/id/5/name/jack框架
index.php是入口文件this
index表示index控制器spa
test表示控制器中的test方法code
id表示第一個get傳遞的參數名是id對象
5是第一個參數的值blog
name表示第二個get傳遞的參數名是nameget
jack是第二個參數的值域名
若是是其餘框架,經過以上的pathinfo,仍能夠調用$_GET[‘’]來獲取變量,但在CI中不能這樣使用,會提示id未定義it
在CI中,要使用uri對象的segment方法獲取參數值,實參是參數值在URL中的序號,入口文件的序號爲0
對於上面的URL調用
$this->uri->segment(4)能夠得到參數id的值
$this->uri->segment(6)能夠得到參數name的值
正因如此,在URL中實際能夠不傳入參數名而直接傳參數值,而後經過segment根據序號獲取參數值,好比上面的URL能夠修改爲這樣:http://localhost/study_codeIgniter/index.php/index/test/5/jack,此時,$this->uri->segment(3)的值是5,$this->uri->segment(4)的值是jack,對於省略參數名的URL,有一種更簡便的使用方式,這個URL能夠解讀爲調用index控制器的test方法,該方法有兩個形參,第一個參數的值是5,第二個參數的值是jack,此時能夠直接經過傳入的參數來訪問
public function test($id, $name) { echo $id . "<br />" . $name; }