当我开启 'URL_PARAMS_BIND_TYPE'=>1, //传参模式,允许顺序传参,也就是URL不写变量名
访问
怎么啥也没有?
请问在thinkPHP 里怎么给 $_GET[""] 赋值?
public function test($id ,$name )
{
echo $_GET["id"] . "-" . $_GET["name"];
}
当我开启 'URL_PARAMS_BIND_TYPE'=>1, //传参模式,允许顺序传参,也就是URL不写变量名
访问
怎么啥也没有?
请问在thinkPHP 里怎么给 $_GET[""] 赋值?
public function test($id ,$name )
{
echo $_GET["id"] . "-" . $_GET["name"];
}
dump($_REQUEST); 看看,数值前面要有参数名 形如/id/23
例:http://192.168.45.3:8125/home...
array(2) {
["id"] => string(2) "23"
["_URL_"] => array(4) {
[0] => string(4) "home"
[1] => string(5) "index"
[2] => string(2) "id"
[3] => string(2) "23"
}
}
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答888 阅读✓ 已解决
1 回答565 阅读✓ 已解决
这时候就需要上代码来解释这些神奇的问题啦.
向下看(来自
ThinkPHPLibraryThinkDispatcher.class.php
211行):代码中首先会把url中的路径信息切割,也就是
Getpost/test/2/xxx
这一部分,而其中在前面的获取控制器阶段,会把Getpost/test
进行移除,最后到了URL参数绑定的过程中,就会直接将paths
数据赋值给var
,然后在于$_GET
数组进行合并,所以,在$_GET数组中是只存在值,而不存在楼主要的键的,因为TP并不知道你要绑定的是哪个键.关于如何绑定,那就继续看代码:
向下看(来自
ThinkPHPLibraryThinkApp.class.php
136行):以上就是绑定参数的代码,其中当
URL_PARAMS_BIND_TYPE
为true时,他就会将路径参数依次弹出给函数的参数,然后在利用invokeArgs进行赋值.