MVC模式实现

时间:2014-11-26 21:04:38

标签: php url-routing autoload

我有自己的MVC。 在我的路线文件中,我有下一个代码:

<?php
class Route
{
    static function run()
    {
        // контроллер и действие по умолчанию
        $controller_name = 'Main';
        $action_name = 'index';

        $routes = explode('/', $_SERVER['REQUEST_URI']);

        // получаем имя контроллера
        if ( !empty($routes[1]) )
        {   
            $controller_name = $routes[1];
        }

        // получаем имя экшена
        if ( !empty($routes[2]) )
        {
            $action_name = $routes[2];
        }

        // добавляем префиксы

        $controller_name = 'Controller_'.$controller_name;
        $action_name = 'action_'.$action_name;




        // подцепляем файл с классом контроллера
        $controller_file = strtolower($controller_name).'.php';
        $controller_path = "myapp/controllers/".$controller_file;
        if(file_exists($controller_path))
        {
            include "myapp/controllers/".$controller_file;
        }
        else
        {
            /*
            правильно было бы кинуть здесь исключение,
            но для упрощения сразу сделаем редирект на страницу 404
            */
            Route::ErrorPage404();
        }

        // создаем контроллер
        $controller = new $controller_name;
        $action = $action_name;

        if(method_exists($controller, $action))
        {
            // вызываем действие контроллера
            $controller->$action();
        }
        else
        {
            // здесь также разумнее было бы кинуть исключение
            Route::ErrorPage404();
        }

    }

    function ErrorPage404()
    {
        $host = 'http://'.$_SERVER['HTTP_HOST'].'/';
        header('HTTP/1.1 404 Not Found');
        header("Status: 404 Not Found");
        header('Location:'.$host.'404');
    }
}

我的核心控制器有下一个代码:

<?php
class Controller {

    public $model;
    public $view;

    function __construct()
    {
        $this->view = new View();
    }

    function action_index()
    {

    }
}

?>

所以,我不知道如何编写BASE URL,因为我试着继续http://localhost:81/mymvc/main/index 它说404 Not Found页面,在Apache日志文件中我有下一个:

[Wed Nov 26 22:30:29.481678 2014] [:error] [pid 1692:tid 780] [client 127.0.0.1:50310] PHP Fatal error:  Class 'Controller_mymvc' not found in C:\\www\\mymvc\\myapp\\base\\route.php on line 49

那我怎么解决这个问题呢? 谢谢!

0 个答案:

没有答案
相关问题