简单 PHP 路由 php7 未定义 url 及更低

Simple PHP routing with undefined url for php7 and lower

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

如何为 php5.4 编写相同的功能?我想我想用 $k[''] 检查并替换未定义的变量以检查 URL 并输出 "page not found" 消息,但是我无法正确完成它。

有什么想法吗?

<?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();
}

应该可以。