mustang_shelby
@mustang_shelby
i like (*_metallica_*)

Как сделать роутинг не на mvc ( интереса ради )?

Доброго времени суток ! Хотел узнать как же все таки сделать роутинг не на mvc. Замучился я уже искать в гугле. И мне просто стало интересно как и можно ли написать роутинг не впутывая такие вещи как controllers/views/models - везде про них пишут - а про другой способ нет ( но я думаю что он есть )
  • Вопрос задан
  • 460 просмотров
Решения вопроса 4
DevMan
@DevMan
роутинг вообще никак не связан с mvc.
это просто разбор адреса и вызов нужного кода.
Ответ написан
JorryGo
@JorryGo
Backend разработчик
В комментариях увидел, что интересует процедурный стиль.
Помнится очень давно, интереса ради, делал роутинг на switch case
Нечто похожее на это

$uri ='/news/35';

switch ($uri) {
    case (preg_match('/\/news\/\d/i', $uri) ? true : false):
        //include news file
        break;
    default:
        //404
}


Но все таки лучшим вариантом будет сделать массив с нужными роутами с дальнейшей проверкой на соответствие и прогрузкой файла с нужным кодом
Ответ написан
darakanoit
@darakanoit
if (file_exists("all/$page.php"))
	include "all/$page.php";

else if ($_SESSION['id'] and file_exists("auth/$page.php"))
	include "auth/$page.php";

else if (!$_SESSION['id'] and file_exists("guest/$page.php"))
	include "guest/$page.php";

else if ($_SESSION['admin'] and file_exists("admin/$page.php"))
	include "admin/$page.php";

else if (is_numeric($page)) {
	$_SESSION['ref'] = $page;    
	location('register');
}

else
	exit('Страница 404');

Вот такая точка входа на index.php лежит у меня.
Ответ написан
@kuftachev
У Laravel хороший роутинг, если вы реально хотите понять, как устроено, то можете полезть туда и покапаться.

Роутинг вообще никак не связан ни с MVC, ни с ООП. Это просто какая-то структура данных, в зависимости от языка программирования, в PHP, естественно, массив в которой с одной стороны пути, а с другой функция, которая ему соответствует. А дальше есть сотни способов как собрать эту структуру, а также, может быть более сложный массив, чтобы хранить и какие-то дополнительные параметры.

Потом $_SERVER['REQUEST_URI'] и пошла жара )))

P.S. На днях как раз обсуждали, что современный веб вообще не сильно ООП, так как современный контроллер - это просто сгруппированные функции, а реальный объект.

Тоже самое с моделью, она обычно больше структура, чем класс, за исключением сложных систем, хотя и там есть варианты.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы