用PHP理解前端控制器

时间:2014-04-16 16:59:51

标签: php url-routing front-controller

我是PHP的新手,我设法创建了一个真正粗略的CMS。目前,它正在使用许多不同的页面并包含。

但是,如果可能的话,我想使用控制器,而不是使用批次页面(我已经有article.php/admin.php)。

举个例子,我试图转换成这样的东西:

switch ( 'admin' ) {
case 'home':
    include 'view/home.php';
    break;

case 'admin':
    include 'view/admin.php';
    break;

case 'article':
    include 'view/article.php';
    break;

default:
    echo 'default';
    break;
}

这将与$_GET['page']一起使用,因此管理员网址如下所示:http://cms.dev/?page=admin

然而,如果我需要转到admin的子目录会发生什么?例如,如果这些是硬编码页面,我会去admin/new-post.php。使用$_GET method

是否可以获得相同的效果

对不起,如果没有得到很好的解释。让我知道,我会尝试编辑它。我使用了一个smorgsaboard的教程,所以我不是100%的任何一个。

1 个答案:

答案 0 :(得分:0)

您可以在$_GET['page']变量中使用正斜杠,因此https://cms.dev/?page=admin/new-post.php应该可以正常工作。

或者你可以将它放入你的.htaccess:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

然后从REQUEST_URI获取它:

$uri = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);