亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 145
粉絲 7
評(píng)論 7
訪問(wèn)量 198459
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
PHP實(shí)戰(zhàn)案例:路由解析
李東亞1??3????12?
原創(chuàng)
1293人瀏覽過(guò)

案例代碼:

1、url地址:兩種形式

第一種:http://php.edu/route/demo.php/a/b?p=1&m=3
第二種:http://php.edu/route/demo.php/a/b/p/1/m/3

第一種解析代碼1

  1. <?php
  2. echo $_SERVER['PATH_INFO'],'<br>';
  3. echo $_SERVER['PHP_SELF'],'<br>';
  4. echo $_SERVER['SERVER_ADDR'],'<br>';
  5. echo $_SERVER['SERVER_NAME'],'<br>';
  6. echo $_SERVER['REQUEST_METHOD'],'<br>';
  7. echo $_SERVER['QUERY_STRING'],'<br>';
  8. echo '<a href="demo2.php">顯示前一個(gè)頁(yè)面的url;$_SERVER[\'HTTP_REFERER\']</a>','<br>';
  9. echo $_SERVER['SCRIPT_FILENAME'],'<br>';
  10. echo $_SERVER['SCRIPT_NAME'],'<br>';
  11. echo $_SERVER['SERVER_PORT'],'<br>';
  12. echo $_SERVER['REQUEST_URI'],'<br>';
  13. echo '<hr>';
  14. echo print_r($_GET,true),'<br>';
  15. echo implode(',', $_GET),'<br>';
  16. vprintf('?p=%s&m=%s', $_GET);
  17. echo '<br>';
  18. // url類(lèi)型
  19. echo 'url類(lèi)型:','<br>';
  20. echo "第一種url:http://php.edu/route/demo.php/a/b?p=1&m=3",'<br>';
  21. echo "第二種url:http://php.edu/route/demo.php/a/b/p/1/m/3",'<br>';
  22. echo '<hr>';
  23. echo '<h3>第一種url解析</h3>';
  24. // 第一種路由解析
  25. $cm=explode('/',$_SERVER['PATH_INFO']);
  26. $cm=array_values(array_filter($cm));
  27. // 解析出類(lèi)和方法
  28. $method=array_pop($cm);//尾部出
  29. $class=ucfirst(array_shift($cm));//頭部出
  30. $params=$_SERVER['QUERY_STRING'];
  31. // print_r($params);
  32. parse_str($params,$agu);
  33. // print_r(array_values($agu));
  34. // $url=parse_url('http://php.edu/route/demo.php/a/b?p=1&m=3');
  35. // 調(diào)用類(lèi)
  36. class A
  37. {
  38. public function b($n,$m)
  39. {
  40. return sprintf('當(dāng)前類(lèi):%s<br>當(dāng)前方法:%s<br>當(dāng)前參數(shù):%s,%s',__CLASS__,__METHOD__,$n,$m);
  41. }
  42. }
  43. $c=new $class();
  44. echo $c->$method(...array_values($agu));

第二種解析代碼2

  1. <?php
  2. echo @$_SERVER['HTTP_REFERER'];
  3. // url類(lèi)型
  4. echo 'url類(lèi)型:','<br>';
  5. echo "第一種url:http://php.edu/route/demo.php/a/b?p=1&m=3",'<br>';
  6. echo "第二種url:http://php.edu/route/demo.php/a/b/p/1/m/3",'<br>';
  7. echo '<hr>';
  8. echo '<h3>第一種url解析</h3>';
  9. // 第二種路由解析
  10. // print_r($_SERVER['PATH_INFO']);
  11. $cm=explode('/',$_SERVER['PATH_INFO']);
  12. $cm=array_values(array_filter($cm));
  13. // print_r($cm);
  14. // 解析出類(lèi)和方法
  15. $class=ucfirst(array_shift($cm));//頭部出
  16. $method=array_shift($cm);//頭部出
  17. //解析參數(shù)
  18. $params=[];
  19. for($i=0;$i<count($cm);$i+=2){
  20. if(isset($cm[$i+1])){
  21. $params[$cm[$i]]=$cm[$i+1];
  22. }
  23. }
  24. // print_r($params);
  25. // 調(diào)用類(lèi)
  26. class A
  27. {
  28. public function b($n,$m)
  29. {
  30. return sprintf('當(dāng)前類(lèi):%s<br>當(dāng)前方法:%s<br>當(dāng)前參數(shù):%s,%s',__CLASS__,__METHOD__,$n,$m);
  31. }
  32. }
  33. $c=new $class();
  34. echo $c->$method(...array_values($params));

演示結(jié)果:

總結(jié)

1、路由原理::將URL中的控制器,方法和參數(shù)解析出來(lái),映射到對(duì)應(yīng)的控制器類(lèi)和方法上
2、路由常用函數(shù):$_GET獲取參數(shù)返回參數(shù)數(shù)組;$_SERVER['QUERY_STRING']獲取參數(shù)組成的字符串,url地址中?后面的部分;
$SERVER['PATH_INFO']獲取路徑變量,跟在文件后面的變量例如php.edu/route/demo1.php/a/b 中的 /a/b;
array_filter()過(guò)濾數(shù)組中的空值,array_values()把二維數(shù)組的值取出重排;array_shift()從數(shù)組頭部取出一個(gè);
parse_str($str,$array)把一個(gè)查詢字符串解析成數(shù)組返回;explode('分割字符','字符串')按分隔符把字符串解析成一個(gè)變量;
ucfirst($str)把字符串首字母大寫(xiě);

批改老師:天蓬老師天蓬老師

批改狀態(tài):合格

老師批語(yǔ):路由是任何框架都具體的基本功能, http請(qǐng)求通過(guò)路由發(fā)送
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)