简单 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();
}
应该可以。
尝试在安装了 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();
}
应该可以。