CodeIgniter學習筆記(五)——CI超級對象中的uri

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

image

在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;
}
相關文章
相關標籤/搜索