php使用索引进行url路由

时间:2016-01-08 09:03:32

标签: php frameworks

今天我开始研究一个以前开发人员没有完成的项目。由于他/她没有使用任何框架,但硬编码php,首先我想了解他是如何得到他的"框架"建立。所以我把他的索引作为某种门户。以下是此代码的示例:

<?php session_start(); 

    ob_start();

    require_once 'config.php'; //config file
    require_once 'global_functions.php'; //some functions we use in project
    require_once 'dil/'.$lang.'/main.php'; //language file
        switch($redirect){

        case "test" :
            require_once 'test.php';
        break;  

        case "login" :
            require_once 'login_page.php';
        break;
        //like 50 cases here
        default://i added this there was no default page before, tell if i did wrong.
            if (!isset($_SESSION['LoginName']))
            {   
                $yonlendir = 'login';
                require_once 'login_page.php';
                break;
            }else{
                $yonlendir = 'main';
                require_once 'main.php';
                break;
            }
        break;
    }

    ob_end_flush();

?>

我想学习的是,这是处理网址路由的有效且可靠的方法吗?如果是的话,有没有提到这个的文件,我可以检查一下吗?

提前致谢。

更新: global_functions.php示例代码,有超过50个函数,但没有类......似乎他被项目所淹没,因为那根本不是OOP ..

<?php

function addDayswithdate($date,$days){

    $date = strtotime("+".$days." days", strtotime($date));
    return  date("d.m.Y", $date);

    }



function check_get_req($value){

    return $value; 
    $reparray_var1 = array("%20","%21","%22","%23","%24","%25","%26","%27","%28","%29","%3B","%FC","%E9","%2F","%3F","%E1","'", " ");
    $reparray_sil1 = array(" ","!","\"","#","$","%","&","&#34;","(",")",";","Ü","é","-","?","á","&#34;", "");
    return str_replace($reparray_var1,$reparray_sil1,$value);
}
//some calculations and array functions goes on and on....
    ?>

2 个答案:

答案 0 :(得分:0)

我建议您可以轻松地将代码移至Yii2框架。它很适合你的情况。

https://github.com/yiisoft/yii2

  

Yii的最低要求是您的Web服务器支持PHP 5.4。

或使用pagekit的趋势非常好。

https://pagekit.com/

答案 1 :(得分:0)

如果你想继续使用这个旧代码,你应该为自己做一些重构做好准备。例如,如果$ request值与文件名匹配,则可以使用以下内容轻松替换switch语句:

$file_to_include = $redirect.'.php';
if(!empty($redirect)) {
   include_once ($file_to_include);
} else {
    if (!isset($_SESSION['LoginName'])) {   
        $yonlendir = 'login';
                include_once 'login_page.php';
    }else{
        $yonlendir = 'main';
        include_once 'main.php';
    }
}

但是在这种情况下,我还建议检查文件是否可用file_exists($file_to_include)并且au contraire转到默认页面。故事可能变得难看。 重用或重构这样的函数式编程意大利面条代码真的很难。尝试将整个东西迁移到一些轻量级框架(这将花费你更少的nervs :))