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; }