Попытка использования этого класса php routing на сервере с установленной версией php 5.4. этот код работает, но не подходит для неопределенных URL-адресов. он также имеет строку комментариев ($k[$_GET['p']] ?? $k[''])();
с правильным поведением кода для php7, что заставляет код работать с комментарием кода .Простая PHP-маршрутизация с неопределенным URL-адресом для php7 и ниже
Как написать такую же функциональность для 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();
?>
Не понял вопрос, но если вы хотите проверить 'если (Исеть ($ _ GET [ 'р'])) { сделать что-то } еще { что-то еще }' –
Вы можете использовать 'IsSet () 'или даже' empty() ', чтобы проверить, присутствует ли он. –
Я пытаюсь как-то переписать это '($ k [$ _ GET ['p']] ?? $ k [''])();' и заставить его работать для php5.4, чтобы получить чистую страницу, а не нашел «массаж для неопределенных URL-адресов. как использовать 'isset()' (или, 'empty()'), чтобы проверить, не указан ли URL-адрес? – LowMatic