Что такое грамотный Router?

iSlayter

Новичок
Что такое грамотный Router?

Речь пойдёт о заранее пред.определённых (с помощью рег.выражений) URL'ах, к-е будут уходить на нужный контроллер/метод с нужными параметрами.

Т.е. на сию минутный момент у меня URL выглядит примерно так: http://site.on/e-shop/sections/view/id/2/orderby/lastupdate/sort/desc/ (где e-shop базовая часть пути) - это как-то слишком тяжко.
Необходимо сделать эквивалентный этому URL'у следующий: http://site.on/e-shop/section/2/lastupdate/desc/

Посмотрел ZF. Там делается так (например)

Конфигурационный ini файл:
[production]
routes.archive.route = "archive/:year/*"
routes.archive.defaults.controller = archive
routes.archive.defaults.action = show
routes.archive.defaults.year = 2000
routes.archive.reqs.year = "\d+"
archive - имя правила перезаписи.

Т.е., если реализовывать похожую схему, то нам следует найти уникальные значения:
routes\.(.*)\.(.*)

Потом, разбить информацию по массивам. Обязательно должны присутствовать routes\.(.*)\.route, routes\.(.*)\.defaults\.controller, routes\.(.*)\.defaults\.action

После чего, для уменьшения нагрузки, так сказать, сгенерировать php файлик, в к-м генерировать public static array() класса роутера c которым в дальнейшем работать из front controller'а проверяя соответствие request_string заданному рег.выражению?

Так же необходимо предусмотреть инструмент генерации ссылок (если существует соотв-й роутер). Такому хэлперу необходимо будет скармливать имя роутера и набор заданных параметров.
// ну не все же правила перезаписи в голове держать

Ход мысли верный?
 

zerkms

TDD infected
Команда форума
сгенерировать php файлик
зачем??

Так же необходимо предусмотреть инструмент генерации ссылок (если существует соотв-й роутер). Такому хэлперу необходимо будет скармливать имя роутера и набор заданных параметров.
угу, а вот это жутко удобно

Ход мысли верный?
вот и посмотри в ZF как там :) (идея из РОРа, т.е. де-факто хорошая :) )
 

iSlayter

Новичок
zerkms, ини -- это доп функция. ИМХО, удобнее. Читабельность лучше, вроде. Естественно и $router->add() должно быть возможным напрямую передать массив соответствующий.
Ну и опционально можно xml-конфиги забацать :)
 

iSlayter

Новичок
melo, в моём случае -- сортировка подразделов по дате последнего обновления.
 

Bakti9rov

!*|=?
> R-o-R тоже посмотреть надо
роуты там тоже в .rb, а не в конфигах

> Ну так чтобы не парсить каждый раз ini файлик с конфигом.
это что, типа кеширование? смысл какой тогда в ini хранить?
 

iSlayter

Новичок
Bakti9rov, уже писал выше. Лично на мой взгляд, так удобнее работать :)

Как будет что показать, обязательно выложу.
 

WP

^_^
Никогда не понимал таких сексуальных извращений... можно использовать общую схему строения ссылки.
 

itprog

Cruftsman
Bakti9rov
руби сам как конфиг :) читаемым и краткий.

WP
какую общую?
 

WP

^_^
itprog
У меня например /язык/модуль,действие,действие2,.../
А модули просто работают с массивами и всё..

-~{}~ 16.05.08 17:11:

melo
+1
 

AmdY

Пью пиво
Команда форума
melo
вот в опере есть кнопочка: когда страница грузится - стоп, когда загрузилась - обновить
вот и здесь примерно тоже.
 
Сверху