由编码习惯引发的一点修改

#1 Lucups

最近要维护一个在学校时开发的项目,看看以前的代码,觉得太坑,索性重写。
由于服务器环境太老,最近刚上手的symfony无法派上用场,于是开始寻找一个新的适用于简单的项目、古老的环境的框架,经过筛选,最终决定采用SpeedPHP。

由于习惯了symfony的编码风格,喜欢给控制器加个Controller,动作加个Action(比如,MainController,indexAction),但这样一来,路由就麻烦了,想来想去,论坛里找找没找到解决办法,又舍不得放弃SpeedPHP,毕竟学习成本极低,上手超容易,而且挺方便,最后决定看源码。

看了源码才发现源码原来如此清晰~~赞一个,很快找到解决办法,看到这段代码的时候,心中一喜~

// 在使用PATH_INFO的情况下,对路由进行预处理
if(TRUE == $GLOBALS['G_SP']['url']["url_path_info"] && !empty($_SERVER['PATH_INFO'])){
        $url_args = explode("/", $_SERVER['PATH_INFO']);$url_sort = array();
        for($u = 1; $u < count($url_args); $u++){
                if($u == 1)$url_sort[$GLOBALS['G_SP']["url_controller"]] = $url_args[$u];
                elseif($u == 2)$url_sort[$GLOBALS['G_SP']["url_action"]] = $url_args[$u];
                else {$url_sort[$url_args[$u]] = isset($url_args[$u+1]) ? $url_args[$u+1] : "";$u+=1;>
        if("POST" == strtoupper($_SERVER['REQUEST_METHOD'])){$_REQUEST = $_POST =  $_POST + $url_sort;
        }else{$_REQUEST = $_GET = $_GET + $url_sort;}
}

// 构造执行路由
$__controller = isset($_REQUEST[$GLOBALS['G_SP']["url_controller"]]) ?
        $_REQUEST[$GLOBALS['G_SP']["url_controller"]] :
        $GLOBALS['G_SP']["default_controller"];
$__action = isset($_REQUEST[$GLOBALS['G_SP']["url_action"]]) ?
        $_REQUEST[$GLOBALS['G_SP']["url_action"]] :
        $GLOBALS['G_SP']["default_action"];

这构造执行后的路由不正是我想要的吗?果断在后面加上这两行:

// Start: add by Lucups
$__controller .= 'Controller';
$__action .= 'Action';
// End: add by Lucups

试了一下,果然有效~Nice!
修改前: http://localhost/speedphp/index.php/MainController/indexAction
修改后:http://localhost/speedphp/index.php/main/index
(注:开启了PATH_INFO)

2013-10-22 00:23:37

#2 Lucups

忘了说了,为什么能够很快定位到那一段,其实我是搜索整个文档,搜索关键词“PATH_INFO”,然后,你懂的~附图:
QQ截图20131022002726.jpg

2013-10-22 00:28:02

#3 Lucups

:lol另外就是,采用这种方式后,就不能使用自动加载相应模板文件的功能了,所以只能手动用$this->display('xxx.html')加载了,但愿有人能够给出更好的解决方案。

2013-10-22 00:39:50

#4 jake

{:soso_e128:} 在speedphp设计之初,有对这个控制器前缀进行过思考,好处是可以区分一下。

不过最后还是放弃前缀,因为没有前缀写起来更爽,speedphp也是希望能传递这种爽快的编程感觉,所以就没有使用控制器前缀。

PS:本帖转移到交流区,谢谢。

2013-10-22 08:12:04

#5 Lucups

jake 发表于 2013-10-22 08:12
在speedphp设计之初,有对这个控制器前缀进行过思考,好处是可以区分一下。

不过最后还是放 ...
没有在交流区发帖的权限。。。

2013-10-24 06:21:57