• tp5使用$_GET获取不到数据


    使用过tp5和tp3版本朋友,会发现tp5完全是thinkphp的一次重构。给我们的不是版本的升级,完全就是两个不同的框架嘛。如果用习惯了tp3,断崖式跳到了tp5,难免会不适应。
    
    其中就有一个对$_GET这个全局变量的使用问题,在有些情况下,tp5无法使用$_GET获取数据?
    
    如果你的请求的地址参数是以pathinfo形式,这样参数是无法用$_GET去获取的,同样也不能使用系统中的get方法。
    //请求地址"http://www.xxx.com/index/user/uid/100"
       print_r($_GET['uid']);//获取不uid,会丢出一个异常
        print_r(input('get.uid'))//结果为空
        print_r(input('id'))//ok,正常获取
        print_r(input('param.id'))//ok,正常获取
        print_r(Request::instance()->param('id'))//ok,正常获取
        print_r(Request::instance()->get('id'))//结果为空
    
    //请求地址为"http://www.xxx.com/index/user?uid=100"
        print_r($_GET['uid']);//ok,正常获取
        print_r(input('get.uid'))//ok,正常获取
        print_r(input('id'))//ok,正常获取
        print_r(input('param.id'))//ok,正常获取
        print_r(Request::instance()->param('id'))//ok,正常获取
        print_r(Request::instance()->get('id'))//ok,正常获取
    //请求地址为"http://www.xxx.com/index/user/uid/100?name=chenxing"
        print_r($_GET);//只能获取name值
        print_r(input('get.'))//只能获取name值
        print_r(input(''))//ok,正常获取所以值
        print_r(input('param.'))//ok,正常获取所以值
        print_r(Request::instance()->param(''))//ok,正常获取所以值
        print_r(Request::instance()->get(''))//只能获取name值
    上面的三种请求参数地址在我们日常开发中比较常见,那么能够正常获取的请用系统的param方式获取,这个是最兼容的获取方式
    
    回到问题,我们探究为什么pathinfo中的参数$_GET无法正常获取?能产生这样疑问的朋友其实陷入tp3给我们带来的认知误区。在tp3中上面的请求的三种方式都可以用$_GET获取其中的所有参数,久而久之你就习惯了这种写法,然后就把这种获取方式变成理所当然。我们撇开框架pathinfo地址同样无法用$_GET获取,对于地址中的get请求的参数必须是以”?“开始的。那么为什么tp3可以呢?因为tp3把pathinfo中的参数整合到了get请求中。
    
    现在大家应该能够明白的感受到开头提到的tp3到tp5这种断崖式升级了吧。忘掉tp3,让tp5在我们手中快活的游走
    【转载】https://blog.csdn.net/Monster_hobo/article/details/80206491


    世界上最美的风景,是自己努力的模样
  • 相关阅读:
    Linux操作篇之配置Samba
    Chrome扩展实现网页图片右键上传(以E站图片搜索为例)
    Linux开机自动挂载NFS配置的一个误区
    ffmpeg指令解读海康威视摄像头
    linux服务器性能调优之tcp/ip性能调优
    多线程程序设计中的8条简单原则
    初识文件系统
    socket中的listen到底干了哪些事情?
    ip面向无连接?TCP面向连接?HTTP连接方式?
    网络层和数据链层的区别
  • 原文地址:https://www.cnblogs.com/xiong-hua/p/11977613.html
Copyright © 2020-2023  润新知