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

搜索
博主信息
博文 56
粉絲 1
評(píng)論 0
訪問量 76309
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
簡(jiǎn)單的URL到控制器方法的映射
零龍
原創(chuàng)
1525人瀏覽過

URL到控制器方法的映射


用到的函數(shù)

  • $_SERVER[‘PATH_INFO’] 解析訪問地址
  • array_filter 獲取數(shù)組中的空值
  • array_values 將數(shù)組從0開始重新排列
  • array_slice 獲取數(shù)組中的任意值 參數(shù)1:數(shù)組,參數(shù)2:位置,參數(shù)3:取出的數(shù)量
  • array_shift 取出數(shù)組第一個(gè)鍵值
  • array_pop 獲取數(shù)組最后一個(gè)鍵值
  • ucfirst 將首字母轉(zhuǎn)換大寫

示例

  1. <?php
  2. namespace Url;
  3. class MyurlController
  4. {
  5. public function index()
  6. {
  7. return '調(diào)用了index方法!';
  8. }
  9. }
  10. // $pathinfo = explode('/',$_SERVER['PATH_INFO']);
  11. // //PATH_INFO取出網(wǎng)址/admin/admin888/action/index用explode轉(zhuǎn)為數(shù)組
  12. // $pathinfo = array_filter($pathinfo);
  13. // //array_filter過濾數(shù)組中的空值
  14. // $pathinfo = array_values($pathinfo);
  15. // //array_values對(duì)數(shù)組從0重新排列
  16. $pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));
  17. // 將網(wǎng)址轉(zhuǎn)換返回一個(gè)數(shù)組
  18. // $pathinfo = array_pop($pathinfo);
  19. // 取出數(shù)組最后一個(gè)鍵值
  20. // $pathinfo =array_slice($pathinfo,-2,1);
  21. //array_slice取出數(shù)組中倒數(shù)第二鍵值,參數(shù)1:數(shù)組,參數(shù)2:取出的位置,參數(shù)3:取出幾個(gè)值
  22. // $pathinfo = array_shift($pathinfo);
  23. //取出數(shù)組的值
  24. // $pathinfo = ucfirst($pathinfo);
  25. //ucfirst將鍵值第一個(gè)字母轉(zhuǎn)換大寫
  26. $pathinfo = ucfirst(array_shift(array_slice($pathinfo,-2,1)));
  27. //取出網(wǎng)址中的myurl將首字母轉(zhuǎn)換大寫
  28. $controller = __NAMESPACE__.'\\'.$pathinfo.'Controller';
  29. //取出的網(wǎng)址數(shù)組中的值和命名空間作為調(diào)用的類(生成解析控制器的類名稱)
  30. $action = array_pop(explode('/',$_SERVER['PATH_INFO']));
  31. //取出網(wǎng)址數(shù)組中最后一個(gè)值,作為調(diào)用的方法(生成解析控制器的類方法)
  32. echo (new $controller)->$action();
  33. //使用生成的控制器類名稱及方法調(diào)用類

示例圖:

地址通過url傳值

示例:

  1. <?php
  2. namespace Url;
  3. class Myurl
  4. {
  5. public function index($id,$name,$age,$mobile)
  6. {
  7. return '您的ID是:'.$id.'您的用戶名是:'.$name.'您的年齡是:'.$age.'您的手機(jī)是:'.$mobile;
  8. }
  9. }
  10. $pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));
  11. $controller = __NAMESPACE__ .'\\'.ucfirst(array_shift($pathinfo));
  12. $action = array_shift($pathinfo);
  13. // print_r($pathinfo);
  14. $params =[];
  15. for($i = 1 ; $i < count($pathinfo);$i+=2)
  16. {
  17. $params[$pathinfo[$i]] = $pathinfo[$i];
  18. }
  19. echo call_user_func_array([(new $controller),$action],$params);、

示例圖:

解析Url值

  1. <?php
  2. namespace Url;
  3. class MyurlController
  4. {
  5. public $pathinfoClass;
  6. public $pathinfoMethod;
  7. public $params = [];
  8. public function index($id,$name,$age,$mobile)
  9. {
  10. return 'Url傳值無鍵調(diào)用類:用戶ID:'.$id.' 用戶姓名:'.$name.' 用戶年齡:'.$age.' 用戶手機(jī):'.$mobile;
  11. }
  12. public function getClass($pathinfo)
  13. {
  14. $this->pathinfoClass = array_shift(array_splice($pathinfo,-2,1));
  15. $this->pathinfoClass = __NAMESPACE__.'\\'. ucfirst($this->pathinfoClass).'Controller';
  16. return $this->pathinfoClass;
  17. }
  18. public function getMethod($pathinfo)
  19. {
  20. $this->pathinfoMethod = array_pop($pathinfo);
  21. return $this->pathinfoMethod;
  22. }
  23. public function getDate($pathinfo)
  24. {
  25. $pathinfo =array_slice($pathinfo,0,4);
  26. for($i = 0 ;$i < count($pathinfo);$i++)
  27. {
  28. $this->params[$pathinfo[$i]] = $pathinfo[$i];
  29. }
  30. return $this->params;
  31. }
  32. }
  33. $pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));
  34. $pathinfoClass = (new MyurlController)->getClass($pathinfo);
  35. $pathinfoMethod = (new MyurlController)->getMethod($pathinfo);
  36. $params =(new MyurlController)->getDate($pathinfo);
  37. echo call_user_func_array([(new $pathinfoClass),$pathinfoMethod],$params);

示例圖:

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

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

老師批語:這個(gè)簡(jiǎn)單的案例, 可以讓我們快速理解路由的原理
本博文版權(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é)申明 意見反饋 講師合作 廣告合作 最新更新
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é)