程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

简单的 PHP 路由,未定义 php7 及更低版本的 url

发布于2023-12-27 22:25     阅读(531)     评论(0)     点赞(19)     收藏(2)


尝试在安装了 php 5.4 版本的服务器上使用此 php 路由类。此代码可以工作,但不适用于未定义的 URL。它还有一个注释行($k[$_GET['p']] ?? $k[''])();,其中包含 php7 的正确代码行为,这使得代码可以与//404注释的代码块一起使用。

如何为php5.4编写相同的功能?我想我想检查并替换未定义的变量来$k['']检查 URL 并输出“找不到页面”消息,但是我无法正确完成它。

有任何想法吗?

<?php
    class R 
    {
        private $r = [];
        function a($r, callable $c){
            $this->r[$r] = $c;
        }

        function e(){
            $k = $this->r;
            // working php7 version: ($k[$_GET['p']] ?? $k[''])();

            // trying to make the same for php5.4 here:
            $k[$_GET['p']]();       

        } 
    }

    $router = new R;

    // Home
    $router->a('/', function(){
        echo 'Home';
    });

    // About
    $router->a('/about', function(){
        echo 'About';
    });

    // 404 (works only with php7 version line of code)
    $router->a('', function(){
        echo 'Page Not Found';
    }); 

    $router->e();
?>

解决方案


尝试这个:

function e() {
    $p = $_GET['p'];
    $k = isset($this->r[$p]) ? $this->r[$p] : $this->r[''];
    $k();
}

它应该有效。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.phpheidong.com/blog/article/550923/20a2f88842af8e890b80/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

19 0
收藏该文
已收藏

评论内容:(最多支持255个字符)