php mvc Роутер, вернуть 404 ошибку или поймать ошибку Fatal error
Подскажите пожалуйста как вывести 404 ошибку. Мой роутер выглядит так. Сейчас роутер возвращает фатальную ошибку, если не находит путь. Fatal error: Uncaught Error: Call to undefined method IndexController::actionIndexfindex() in...
class Router {
private $routes;
public function __construct()
{
$routesPath = ROOT.'/config/routes.php';
$this->routes = include($routesPath);
}
// Получаем строку запроса
private function getURI()
{
if (!empty($_SERVER['REQUEST_URI'])) {
return trim($_SERVER['REQUEST_URI'], '/');
}
}
public function run()
{
// Получить строку запроса
$uri = $this->getURI();
// Проверить такого наличия запроса в routes.php
foreach ($this->routes as $uriPattern => $path) {
// Если есть совпадения определить какой контроллер и action обрабатывают запрос
if (preg_match("~$uriPattern~", $uri)) {
// Получаем внутренний путь из внешнего согласно правилу
$internalRoute = preg_replace("~$uriPattern~", $path, $uri);
// Определяем контроллер, action, параметры
$segments = explode('/', $internalRoute);
$controllerName = array_shift($segments).'Controller';
$controllerName = ucfirst($controllerName);
$actionName = 'action'.ucfirst((array_shift($segments)));
$parameters = $segments;
// Подключить файл класса контроллера
$controllerFile = ROOT.'/controllers/'.$controllerName.'.php';
if (file_exists($controllerFile)) {
include_once($controllerFile);
}
// Создать объект, вызвать метод (т.е. action)
$controllerObject = new $controllerName;
$result = $controllerObject->$actionName($parameters);
if ($result !== NULL) {
break;
}
}
}
}
}