尝试在已安装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();
}
它应该工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句