Реализация шаблона MVC

У меня есть свой 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 page, а в логе 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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector