Я работаю над простым маршрутизатором для практики php, он уже развивается совсем немного, но я отправляю более упрощенную версию.Как исправить этот класс маршрутизатора, чтобы включить 404 ошибки/страницы?
Класс моего маршрутизатора проверяет данный URL-адрес и текущий путь к серверу и возвращает содержимое, если они совпадают. Это прекрасно работает, но проблема в том, что маршрутизатор работает 3 раза, потому что я вызываю метод get() маршрутизатора 3 раза в файле routes.php.
Если я, например, хочу вернуть ошибку 404, когда маршрут не соответствует, он вернет его 3 раза. 1 раз для каждого маршрута не найден. Каков наилучший способ исправить это?
Как всегда, ваша помощь очень ценится.
маршрутизатор класса:
<?php
class Router {
public $currentRoute = '/';
public function __construct()
{
$this->getCurrentRoute();
}
public function getCurrentRoute()
{
if(isset($_SERVER['PATH_INFO'])) {
$this->currentRoute = $_SERVER['PATH_INFO'];
}
}
public function get($route, $content)
{
if($route == $this->currentRoute) {
echo $content();
}
}
}
Маршруты Файл:
<?php
$router->get('/', function()
{
return 'Index page';
});
$router->get('movies', function()
{
return Cinematix\View::make('movies');
});
$router->get('users', function()
{
return 'The users collection page';
});
Я думаю, это должно было бы быть переписана в значительной степени осуществить это в другом вопросе, так как никто не ответил я буду стараться обновлять это с возможным решением, которое кто-то может мне помочь. –
Я бы переписал его с помощью Маршрутов, соединяющих Маршруты внутри него. Поэтому вместо того, чтобы получить, вы добавите маршруты и после этого проверите их все в одном цикле внутри маршрутизатора. Я верю, что большинство маршрутизаторов в популярных фреймворках сделаны. – SeriousDron