Blogger Information
Blog 39
fans 0
comment 0
visits 34012
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
将URL地址直接路由一个函数上--2019/08/07
LISTEN的博客
Original
634 people have browsed it

写一个简单的路由, 将URL地址直接路由一个函数上(注意不是类方法), 
这个函数可以用闭包来实现, 大家想一下应该如何做?


代码:

实例

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

//http://php***/0807test/my_work.php/hello/id/5/name/admin

//hello:方法
//id、name:参数
//5、admin:参数值

$uri=$_SERVER['PATH_INFO'];

// 1. 从pathinfo切割出独立的单元

$request=explode('/',$uri);

echo '<pre>'. print_r($request, true);

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

// 3. 从pathinfo中解析出变量键值对
$values = array_slice($request, 2);

$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);

运行实例 »

点击 "运行实例" 按钮查看在线实例


运行结果:

2.png

Correction status:qualified

Teacher's comments:能写出来不容易, 难道就不想写点总结吗? 只有代码, 极少注释, 不好
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post