?

Log in

No account? Create an account
Main

Раутинг в веб-приложении, терминологическое

x-posted ru_php

Практически устоявшимися терминами при работе с MVC являются раутер и диспетчер. Считается, что раутер (router), это такой компонент, который берет урл, и некоторым образом транслирует его в модуль, действие, параметры (module,action, parameters). После этого диспетчер (dispatcher) на основе этих данных решает куда передать управление (класс, метод, передача параметров, вызов).

Однако есть обязательный компонент, который я не знаю, как правильно назвать. Это "обратный раутер". Когда я изнутри приложения хочу получить ссылку на некоторое действие. Например (есть в симфони такой хелпер) link('item','edit',32); В результате должен получиться урл на правку объекта, что-то типа /backend/item/32. При простой схеме раутинга такой "обратный раутер" может пользоваться тем же конфигом, что и "прямой" раутер. Однако если приложение сложное и разбитое на подсистемы, то может получиться, что сначала раутинг поределяет подсистему, а потом подсистема внутри себя делает уже свой внутренний раутинг. В этом случае для общесистемного "обратного раутера" нужен свой конфиг.

Какие есть названия для "обратного раутера" в популярных фреймворках или Ваших приложениях?

Comments

Жееесть, всё что в рельсах пройдено 6 лет назад =)

Это link_generator
ну при чем тут жесть-то? вопрос о названии. Вот скажешь про раутер и диспетчер и все тебя правильно поймут и не только в рельсах. А скажешь линк-генератор, решат, что ты дорвейщик :)
Ну и собственно в симфони, насколько смогли слизали это все с рельсов 5 лет назад :)
linkto() по аналогии с рельсами (;
В Zend Framework это один из помощников представления (view helper), который называется "url". Кроме параметров, которые нужно запихнуть в URL, он еще просит в необязательном порядке указать, с использованием какого маршрута нужно формировать URL. Видимо, потому что нет (или пока нет) возможности автоматически определить его. И это аццки вырубает.
UrlComposer
В ZF этим занимается сам route (http://framework.zend.com/code/browse/Zend_Framework/trunk/library/Zend/Controller/Router/Route/Interface.php?r=914#l33). View helper всего лишь берет указанный и просит его создать урл исходя из переданных параметров.
угу там у них на уровне методов получается router->match(), и router->assemble(), т.е. если в такой терминологии перевести это в отдельные классы, то получится что-то вроде RouteParser->match() и RouteAssembler->build().

Я их у себя назвал Router и Dispatcher, и в котроллере делал что-то вроде

$this->call($this->Dispatcher->match());

и

echo $router->url(...);

А тут обнаружил, что Dispatcher это обычно вынесенный в объект call. Ну и думаю переименую, чтобы соответсвовать общепринятым названиям.
Я называю это "сборщик адреса" :)