anton_reut
@anton_reut
Начинающий веб-разработчик

Как и где хранить роуты?

Разбираюсь с MVC и в примерах постоянно вижу что роуты статично прописаны в файлах типа routes.php:
return array (
	'news/([0-9]+)'=>'news/view/$1',
	'news' => 'news/index',
	);


В своем проекте сделал хранение роутов в базе данных, примерно так:
<?php
include ROOT . '/db/db.php';
$sql = 'SELECT * FROM routes';
$result = $pdo->query($sql);
while($r = $result->fetch())
	{
		$routes[]=array(
		'id'=>$r['id'],
		'uri'=>$r['uri'],
		'controller'=>$r['controller'],
		'action'=>$r['action']
		);
	}
return $routes;
?>

Но мне сказали что так не правильно и будет дичайшая нагрузка на базу данных.
То что Параметризованные (динамические) роуты товаров или статей надо через регулярки делать знаю.

Как и где правильно хранить роуты?
  • Вопрос задан
  • 325 просмотров
Решения вопроса 2
OnYourLips
@OnYourLips
Роуты - это не данные приложения.
Роутинг не должен зависить от состояния базы.

Лучше всего их хранить в конфигурационных файлах. Попробуйте самые популярные роутеры.
Ответ написан
php666
@php666
PHP-макака
ссылка про роуты
там два варианта - роут по принципу наименования как физического файла класса, так и с описанием (виртуальный) как у тебя.

В своем проекте сделал хранение роутов в базе данных
это глупость. это никому не нужно. роут не должен никак зависеть от базы. она может быть вообще недоступна. нет ни одной причины класть роуты в базу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@cpanelhostig
hosting, php dev
В своем движке храню роуты в бд, но они при изменении скриптом пишутся в конфиг nginx. Так намного быстрее работает. При использовании apache движок создант записи в .htccess.
Ответ написан
dmitriylanets
@dmitriylanets
веб-разработчик
часть роутеров (админ, ajax) конфигурирую через конфиг, публичные роутеры в бд
Ответ написан
xEpozZ
@xEpozZ
Веб-разработчик
Сохраняйте после первой выборки данные в кеш. Если кто-то(вы, например) добавит новый маршрут в БД, то очищайте кеш.
Ответ написан
Ваш ответ на вопрос

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

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