有人能告诉我如何创建用于导航动作的php类,我想在浏览器上写这样的url
假如我想要主页那么
然后http://myserver.mydomain.com/index/home 动作将是家庭功能index.php。
我知道我可以使用$_POST
和$_GET
来实现这一点,但是我想尝试像codeigniter这样的工作方式到目前为止我尝试过这样的事情
<?php
class Index {
function __construct()
{
parent::__construct();
}
function home(){
include('test/header.php');
include('test/home.php');
include('test/footer.php');
}
function about(){
include('test/header.php');
include('test/about.php');
include('test/footer.php');
}
}
?>
答案 0 :(得分:1)
假设我们有以下重写规则;
RewriteEngine On
RewriteRule ^([^/]*)$ /index.php?module=$1 [L,QSA]
这会重写一个请求; http://example.php/index.php?module=about
至http://example.php/about
现在,让我们看看路由器是如何完成的;
<?php
class Router {
private $strModule; //Holds the module to load (the page)
public function __construct(){}
public function setModule($strModuleName) {
$this->strModule = $strModuleName;
}
public function loadModule() {
if( file_exists('modules/'. $this->strModule .'.php') ) {
include 'modules/'. $this->strModule .'.php';
} else {
'modules/404.php';
}
}
}
现在,让我们在index.php
$objRouter = new Router();
$objRouter->setModule($_GET['module']);
$objRouter->loadModule();
我们的树就像;
- index.php
- modules/
- about.php
- 404.php
当然,这只是一个快速的工作, 可以 得到很大改善。
我希望有所帮助。
注意:强> 漂亮的网址(.htaccess重写规则)只是为了让人眼前一亮。您可以通过不使用重写规则来实现此目的,即使使用上面提供的相同代码
也是如此