2010-11-05 3 views
2

Я пытаюсь понять преимущества использования маршрутизации URL (отправки URL-адреса) по только что запущенному коду из разных сценариев. Помимо более красивых URL-адресов (которые могут быть выполнены с помощью htaccess с использованием любой модели), зачем мне направлять/архивировать/на dispatcher.php? Path =/archive/вместо, скажем, просто переписывать/*/в * .php? Является ли один лучше с точки зрения повторного использования кода? Организация? Обработка ошибок?URL-маршрутизация и несколько сценариев

Вы когда-нибудь переключались с одной модели на другую? Почему вы это сделали? Сколько работы влечет за собой переход?

Для контекста в настоящее время я использую метод множественного сценария. Среда - это Apache + PHP. Это проект среднего размера (более 40 страниц верхнего уровня).

+0

Единственное реальное преимущество - это SEO-friendly или (редко) человеко-читаемые ссылки. делать это с помощью правил mod_rewrite - это большая головная боль. Кроме того, рассмотрим 'auto_prepend_file', который добавит все остальные функции точки ввода в вашу текущую модель. –

+1

Мне трудно поверить, что это только * реальная выгода. Как насчет обработки ошибок верхнего уровня? – theazureshadow

+0

@Col. Шрапнель: проблема с 'auto_prepend_file' заключается в том, что она не очень гранулирована. Я не могу выбрать, чтобы не включать его на странице (насколько я знаю). – theazureshadow

ответ

6

Одним из основных преимуществ маршрутизации является то, что вы можете сделать это условно, принимая решения о маршрутах адресов, основанных на пользовательских данных, значениях сеанса, времени суток и т. Д. Большинство моих проектов слишком просты в использовании этого метода, но если вы попадаете в более сложную систему, я считаю, что контроль над маршрутизацией в коде дает вам дополнительную мощность и возможности.

+0

Я думаю, было бы легко направить, скажем, форму входа на текущую страницу, не имея уродливого параметра «перенаправления» url. Интересно :) – theazureshadow

1

Как говорили другие люди, это отлично подходит для создания симпатичных URL-адресов. Это абсолютная боль, чтобы вручную обновлять .htaccess все время.

Мое личное любимое преимущество маршрутизации URL-адресов заключается в том, что вашему приложению не нужно будет использовать pesky на каждой странице, так как вы можете сделать это в php-коде страницы маршрутизации. Вы также можете написать class autoloader, и вам больше не придется писать слово «включить».

Если вы используете относительные пути, а не абсолютные пути, вы всегда можете сделать все относительно местоположения вашего файла маршрутизации вместо того, чтобы отслеживать, в какой папке вы находитесь, и исправить все это, когда вы решите переместить файл из одной папки в другую.

Очень легко определить постоянные приложения. Например, я нигде не закодировал имя своего сайта, вместо этого решил использовать echo SITE_NAME;, а затем мои дизайнеры решили дважды изменить имя веб-сайта. К счастью, эта константа, определенная на верхнем уровне, была доступна везде, без необходимости включать ее на каждую страницу.

Другим преимуществом является то, что очень легко сделать ошибку, исключение и 404 протоколирование/обработку, когда у вас есть один файл верхнего уровня для всего.

+0

Я предпочитаю использовать 'include (dirname (__ FILE __. '/ Relative/path')' pattern, вместо того чтобы пытаться изменить мой, каждый раз, когда я перемещаю файл. – theazureshadow

Смежные вопросы