Я пытаюсь создать MVC маршрутизатор с PHP для учебных целей.
Однако я не могу загрузить вид, который хочу посетить. Например, я попытаюсь посетить hometead.blog/about, и будет возвращено:
Fatal error: require(): Failed opening required 'controllers/about.php' (include_path='.:/usr/share/php') in /home/vagrant/projects/blog/public/index.php on line 8
Это строка 8 в моем public / index. php:
require Router::load('../routes.php')
->direct(Request::uri());
Это файл маршрутов:
<?php
$router->define([
'' => 'public/index.php',
'about' => 'controllers/about.php',
'blog' => 'controllers/blog.php',
'contact' => 'controllers/contact.php'
]);
Эти маршруты определенно точны. Конечная точка 'about' определенно принадлежит 'controllers / about. php'.
Вот объект маршрутизатора:
<?php
class Router
{
protected $routes = [];
public static function load($file)
{
$router = new static;
require $file;
return $router;
}
public function define($routes)
{
$this->routes = $routes;
}
public function direct($uri)
{
if (array_key_exists($uri, $this->routes)) {
return $this->routes[$uri];
}
throw new Exception('No route defined for this URI.');
}
}
А вот объект запроса:
<?php
class Request
{
public static function uri()
{
return trim($_SERVER['REQUEST_URI'], '/');
}
}
Оба объекта требуются в public / index. php.
Почему я получаю эту ошибку?