我PHP創建我自己的MVC框架,以學習更高級的編程手段。我已經啓動並運行了框架,但是我有關於當前路由方法的問題。我希望框架支持後端cms來讚美前端網站。問題是,我的路由結構的工作原理是這樣 - mywebsite.com/controller/method/id
路由引擎排序信息轉換成這樣CMS路由在MVC
segments 0 => controller, 1 => method, 2 => id
數組現在如果我訪問mywebsite.com/projects需要我什麼,我已經設置了作爲管理頁面。不僅我希望這是訪問只能從mywebsite.com/admin/projects,我希望mywebsite.com/projects帶我去前臺。
所以,如果我想訪問mywebsite.com/projects
我想它呈現「前」控制器,推「項目」入法。如果我訪問mywebsite.com/admin/projects
我希望它加載項目控制器。
下面是整個當前路由類,如下所示。
<?php
class Request {
//url domain.com/controller/method/other
//holds url segments 0 => controller, 1 => method, 2 => other, etc
public $segments;
function __construct() {
$this->parse_globals();
}
function parse_globals(){
//$uri = preg_replace("|/(.*)|", "\\1", str_replace("\\", "/", $_SERVER['REQUEST_URI']));
$uri = (empty($_GET['rt'])) ? '' : $_GET['rt'];
$this->segments = array_filter(explode('/', $uri));
if (in_array("admin", $this->segments)) {
array_shift($this->segments);
}
print_r($this->segments);
//remove index php
if(reset($this->segments) == 'index.php') {
array_shift ($this->segments);
}
}
function controller(){
return $this->segment(0);
}
function method(){
return $this->segment(1);
}
function param($str){
return isset($_REQUEST[$str]) ? $_REQUEST[$str] : false;
}
function segment($no){
return isset($this->segments[$no]) ? $this->segments[$no] : false;
}
}
目前尚不清楚你的問題是什麼。什麼不起作用? – 2012-08-02 02:17:08
@Laurent我編輯了這篇文章,希望它能讓事情更清晰。 – 2012-08-02 02:29:32