Blogger Information
Blog 31
fans 0
comment 0
visits 30278
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP中的路由原理, 解析出控制器, 方法和参数(路径参数)
emy
Original
922 people have browsed it

一、认识路由原理:目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上。

代码:

<?php
    // 路由原理
    // 目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上
    // 控制器
    class UserController
    {
        // 创建一个方法,写出传入参数
        public function getUser($id, $name)
        {
            return "产品id ==> $id, 产品名称 ==> $name";
        }
    }

    // 1. 解析出PATHINFO 将字符串利用‘/’切割 转为数组
    $pathinfo  = array_values(array_filter(explode('/', $_SERVER['PATH_INFO'])));
    // print_r($pathinfo);
    // 2. 解析控制器 
    $controller = ucfirst(array_shift($pathinfo)) . 'Controller'; 
    // 3. 解析控制器中的方法
    $action = array_shift($pathinfo);
    // print_r($pathinfo);
    // 4. 解析参数: pathinfo路径变量
    // 这里放的是从pathinfo中解析出来的变量组成的数组
    $params = [];
    for ($i=0; $i<count($pathinfo); $i+=2) {
        // 检查当前pathinfo变量是否有值?
        if (isset($pathinfo[$i+1])){
            $params[$pathinfo[$i]] = $pathinfo[$i+1];
        } 
    }
    // print_r($params);
    // 5. 调用控制器方法
    $user = new $controller();
    echo $user->$action(...array_values($params));
    //http://php.edu/0514/me.php/user/getuser/id/11/name/鲜花

结果输出:

QQ截图20200531234007.jpg

二、总结:

PHP中的路由目的是用地址调用指定类内的方法并传入参数。在什么场合使用?后期项目中希望能运用到。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:一二阶段作业,请在6月10日前完成
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