@Relike

Как сделать роутинг максимально быстро?

Есть некий URL :
/main_category/
/main_category/page/1
/main_category/category/
/main_category/category/page/1
/main_category/category/post/

Где main_category, category и post соответствующие символьные коды постов в базе. Как за максимально быстрое время определить что сейчас показывается? Вот что я сделал сейчас:
if($s1 && $this->m_categories->isCategoryUrl($s1) && (!$s2 && !$s3 && !$s4) || ($s2 == 'page' && $s3 > 0))
		{
			$this->main_cat($s1);
			
		}
		elseif($s1 && $s2 == 'page' && intval($s3))
		{
			
			$this->main_cat($s1, intval($s3));
		}
		elseif($s1 && $this->m_categories->isCategoryUrl($s2) && $post = $this->m_posts->isPostUrl($s3))
		{
			$this->post($s3, $s1, $s2);
		}
		elseif($s1 && $this->m_categories->isCategoryUrl($s2))
		{
			if($s3 == 'page' && intval($s4))
			{
			
				$this->subcat($s2, intval($s4), $s1);
			}
			elseif($s3)
			{
				show_404();
			}
			else
			{
				$this->subcat($s2, 0, $s1);
			}
		}
		elseif($s1 && $this->m_posts->isPostUrl($s2))
		{			
			$this->post($s2, $s1);
		}
		else
		{
			show_404();
		}


Есть ли у вас какие либо предложения? $1/$2/$3 - соответственно.
Заранее спасибо!

P.S. То что кроме main_category определяется заранее штатным роутером фреймворка, мне-же надо раскидать функцинал внутри одного контроллера.
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Опять ты...))) Уже ж спрашивал.

Подобная ситуация возможна, если явно делаешь что-то не так. Роутинг - это не задача контроллера.
Не стоит запиливать много логики в роутер, потом же обязательно аукнется.

Посмотри реализацию: docs.slimframework.com/routing/get, lumen.laravel.com/docs/routing

Если вопрос именно про скорость: то это уже настройки web сервера, с приведением частных путей к более обобщенным
Ответ написан
Ваш ответ на вопрос

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

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