当我开启 'URL_PARAMS_BIND_TYPE'=>1, //传参模式,允许顺序传参,也就是URL不写变量名
访问
http://localhost/yb1/Home/Get...
怎么啥也没有?
请问在thinkPHP 里怎么给 $_GET[""] 赋值?
public function test($id ,$name ) { echo $_GET["id"] . "-" . $_GET["name"]; }
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这时候就需要上代码来解释这些神奇的问题啦.
向下看(来自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进行赋值.