如何为导航动作创建php类

时间:2014-07-29 12:22:30

标签: php

有人能告诉我如何创建用于导航动作的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');
}

}


?>

1 个答案:

答案 0 :(得分:1)

假设我们有以下重写规则;

RewriteEngine On
RewriteRule ^([^/]*)$ /index.php?module=$1 [L,QSA] 

这会重写一个请求; http://example.php/index.php?module=abouthttp://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重写规则)只是为了让人眼前一亮。您可以通过不使用重写规则来实现此目的,即使使用上面提供的相同代码

也是如此