博客列表 >8.7路由

8.7路由

55555的博客
55555的博客原创
2019年08月09日 16:14:08699浏览

//  路由的基本功能:将URL地址pathinfo,映射到指定的控制器方法中
//  路由是一个请求分发器

<?php

//  路由的基本功能:将URL地址pathinfo,映射到指定的控制器方法中
//  路由是一个请求分发器

//  http://700***/0807/demo/mvc/route2.php/product/id/3/price/36.9

//product:方法
//id、name:参数

$uri = $_SERVER['PATH_INFO'];
echo $uri;
echo '<hr>';
// 输出:/product/id/3/price/36.9

//  1、从pathinfo切割出独立的单元
$request = explode('/', $uri);
echo '<pre>' . print_r($request, true);
echo '<hr>';

//  2、从pathinfo中解析出操作
$pathinfo['action'] = $request[1];
echo '<pre>' . print_r($pathinfo, true);
echo '<hr>';

//  3、从pathinfo中解析出变量键值对
$values = array_slice($request,2);
echo '<pre>' . print_r($values,true);
echo '<hr>';


$pathinfo['action'] = function (...$arr) use ($pathinfo){
  for ($i=0; $i<count($arr); $i+=2){
      if (isset( $arr[$i+1] )){
          $params[$arr[$i]] = $arr[$i+1];
      }
  }

  $str = '';
  foreach ($params as $key=>$value) {
        $str .= $key . ' = ' .$value .'  ';
  }
  return '方法名:' . $pathinfo['action'] . '参数:' . $str;
};

echo call_user_func_array($pathinfo['action'], $values);


显示效果:

    QQ截图20190809160958.jpg


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议