php7及更低版本的简单PHP路由,带有未定义的url
尝试在安装了PHP5.4版本的服务器上使用此php路由类。 这段代码可以工作,但对未定义的URL不起作用。它还有一个注释行php7及更低版本的简单PHP路由,带有未定义的url,php,php-7,php-5.4,Php,Php 7,Php 5.4,尝试在安装了PHP5.4版本的服务器上使用此php路由类。 这段代码可以工作,但对未定义的URL不起作用。它还有一个注释行($k[$\u GET['p']]?$k['')()具有php7的正确代码行为,这使代码能够与//404注释代码块一起工作 如何为php5.4编写相同的功能?我想我想检查并用$k[''']替换未定义的变量,以检查URL并输出“页面未找到”消息,但我无法正确完成 有什么想法吗 <?php class R { private $r = []
($k[$\u 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();
}
它应该可以工作。试试这个:
function e() {
$p = $_GET['p'];
$k = isset($this->r[$p]) ? $this->r[$p] : $this->r[''];
$k();
}
它应该可以工作。我不明白这个问题,但是如果你想检查if(isset($u GET['p']){do something}或者其他{something}
你可以使用isset()
甚至empty()
来检查它是否存在。我正试图以某种方式重写这个($k[$u GET['p']]?$k[''))代码>并使php5.4能够为未定义的URL获得干净的“未找到页面”消息。如何使用isset()
(或,empty()
)检查URL是否未定义?检查如何在PHP5.4中调用匿名函数。call_user_func($k[$\u GET['p']]?:$k['])
?不理解这个问题,但如果要检查如果(isset($\u GET['p']){做点别的事情}其他事情}
您可以使用isset()
甚至empty()
来检查它是否存在。我正试图以某种方式重写此($k[$\u GET['p']]?$k['])代码>并使php5.4能够为未定义的URL获得干净的“未找到页面”消息。如何使用isset()
(或,empty()
)检查URL是否未定义?检查如何在PHP5.4中调用匿名函数。call_user_func($k[$\u GET['p']]?:$k['])
?看起来是这样的。。。非常感谢。看起来是的。。。非常感谢。