使用過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