php 5.4 버전이 설치된 서버에서이 PHP 라우팅 클래스를 사용하려고합니다. 이 코드는 작동하지만 정의되지 않은 URL에는 적합하지 않습니다. 또한 코드 라인 ($k[$_GET['p']] ?? $k[''])();
과 php7에 대한 올바른 코드 동작을 사용하여 //404
주석 처리 된 코드 블록에서 작동합니다.php7 이하에 대해 정의되지 않은 URL이있는 간단한 PHP 라우팅
php5.4와 동일한 기능을 작성하는 방법은 무엇입니까? 나는 확인하고 URL을 확인하고 "페이지를 찾을 수 없습니다"마사지 출력을 $k['']
와 정의되지 않은 변수를 바꿀 것 같아요, 나는 제대로 할 수 없습니다.
어떤 아이디어가 있습니까?
<?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();
?>
는 질문을 이해하지만 싶다면 (는 isset가 ($이 _ GET [ 'p는'])) { 뭔가 할} 다른 {다른 뭔가 을}' –
당신은'는 isset을 사용할 수 있는지 (' 을 확인하지 않았나요)'또는'empty()'를 사용하여 그것이 존재하는지 확인하십시오. –
어떻게 든이'($ k [$ _ GET [ 'p']] ?? $ k [ ''])();'를 다시 작성하여 php5.4가 깨끗한 페이지를 얻을 수 있도록합니다. 정의되지 않은 URL에 대한 마사지를 발견했습니다. 'isset()'(또는'empty()')를 사용하여 URL이 정의되지 않았는지 확인하는 방법? – LowMatic