获取正确的URL /页面以加载简单的MVC

时间:2013-11-13 21:02:38

标签: php url model-view-controller url-routing

我正在制作一个“非常”简单的MVC框架以便学习,但是我无法获得除索引页面之外的其他页面。在views文件夹中,我有2个文件,一个 index.php ,还有一个 register.php ,我正在尝试。

我尝试了各种各样的方法,但无法理解它。我知道最好把不同的控制器类放在不同的文件中,也许是一个加载器控制器页面,但我是php的初学者,所以我想让它尽可能简单...

任何有用的帮助!

我有一个index.php作为根文件夹中的登陆文件,将所有内容绑定在一起:

<?php
/* index.php
 * 
 */

require_once 'model/load.php';
require_once 'controller/main.php';

new mainController();

在控制器文件夹中,我有一个名为main.php的文件:

<?php
/* controller/main.php
 * 
 */


class mainController
{
    public $load;


    public function __construct()
    {
        $urlValues = $_SERVER['REQUEST_URI'];
        $this->urlValues = $_GET;

        //index page
        if ($this->urlValues['controller'] == "") {

        $indexPage = array("key" => "Hello");

        $this->load = new load();
        $this->load->view('index.php', $indexPage);   
        }

        //register page
        if ($this->urlValues['controller'] == "register.php") {

        $registerPage = array("key" => "Register");

        $this->load = new load();
        $this->load->view('register.php', $registerPage);   
        } 

    }
}

然后我在模型文件夹中有一个名为load.php的文件:

<?php
/* model/load.php
 * 
 */
class load
{

    /* This function takes parameter 
     * $file_name and match with file in views.
     */

    function view($file_name, $data = null)
    {
        if (is_readable('views/' . $file_name)) {
            if (is_array($data)) {
                extract($data);
            }

            require 'views/' . $file_name;
        } else {
             echo $this->file;
                die ('404 Not Found');
        }
    }

}

1 个答案:

答案 0 :(得分:0)

在您的mainController类中,您没有名称为urlValues的属性,但您使用它:$this->urlValues = $_GET;。而且你有更多具有相同名称的局部变量,你不使用:$urlValues = $_SERVER['REQUEST_URI'];

您对register.php的URL如何?