多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 获取URL参数 [上一页](49.html "上一页")[下一页](51.html "下一页") 一般情况下URL中的参数就是通过GET方法获取,但是由于PATHINFO的特殊性,URL地址最终需要被解析才能转换成GET参数,ThinkPHP对URL是按照一定的规则进行解析的,除非你使用了URL路由规则,如果你对URL做了特别的定制,但是又不想使用URL路由,那么可以使用框架提供的URL参数获取方法直接获取,例如,我们访问一个如下的网址: http://serverName/News/archive/2012/01/15 正常情况下,只有通过路由才能解析后面的2012/01/15,现在我们可以直接在News控制器的archive操作方法里面直接使用:`Class NewsAction extends Action {<br class="calibre5"></br>    Public function archive(){<br class="calibre5"></br>    $year    = $_GET["_URL_"][2]; <br class="calibre5"></br>    $month  = $_GET["_URL_"][3];<br class="calibre5"></br>    $day    = $_GET["_URL_"][4];<br class="calibre5"></br>    }<br class="calibre5"></br>}`我们可以把URL地址 News/archive/2012/01/15 按照“/”分成多个参数,$_GET["_URL_"][0] 获取的就是News,$_GET["_URL_"][1]获取的就是archive,依次类推,可以通过数字索引获取所有的URL参数。3.0版开始支持URL地址中的PATH_INFO方式的URL的参数获取方式,需要配置 VAR_URL_PARAMS参数,默认值是:`    'VAR_URL_PARAMS'      => '_URL_', // PATHINFO URL参数变量`如果这个值不为空的话,就可以获取URL地址里面的PATH_INFO URL参数,例如 我们访问 `http://serverName.com/index.php/Blog/read/2012/03`则可以在Blog控制器的read操作方法里面采用 $GET['_URL_'][2] 获取参数,表示获取PATH_INFO的URL参数 Blog/read/2012/03中的第3个参数(数组索引从0开始)`$year = $GET['_URL_'][2]; // 2012<br class="calibre5"></br>$month = $GET['_URL_'][3]; //  03`3.1版本开始,建议使用_param方法获取URL参数,_param方法方法是3.1新增的方法,可以自动根据当前请求类型获取参数。 _param方法的用法同_get和_post等方法,区别在于,_param方法能够自动根据当前请求类型自动获取相应的参数,例如: 如果当前是get请求方式,`$this->_param('id'); `将会返回$_GET['id'] 的处理数据 当采用POST请求方式的时候,同样的代码将会返回$_POST['id']的处理数据 如果采用的是PUT请求,那么会自动返回PUT的处理数据,而无需开发人员进行判断。 并且需要注意的是,无论是什么方式的请求,系统都可以支持URL参数的获取,如果C('VAR_URL_PARAMS')设置不为空的话,就可以使用:`$this->_param(1);<br class="calibre5"></br>$this->_param(2);`来获取URL地址中的某个参数。`$year = $this->_param(2);<br class="calibre5"></br>$month = $this->_param(3);`的方式来获取。 这样的好处是可以不需要使用路由功能就可以获取某个不规则的URL地址中的参数。 [上一页](49.html "上一页")[下一页](51.html "下一页")