Означают ли они одно и то же (прикрепление URL-адресов к действиям или действия к URL-адресам) или есть какая-то разница, по которой я скучаю?
Пример: http://github.com/dannyvankooten/PHP-Router vs. http://konstrukt.dk
Означают ли они одно и то же (прикрепление URL-адресов к действиям или действия к URL-адресам) или есть какая-то разница, по которой я скучаю?
Пример: http://github.com/dannyvankooten/PHP-Router vs. http://konstrukt.dk
Ответы:
маршрутизатор:
Маршрутизация - это процесс получения конечной точки URI (той части URI, которая идет после базового URL-адреса) и разбиения ее на параметры, чтобы определить, какой модуль, контроллер и действие этого контроллера должны получить запрос.
контроллер:
Контроллер реализует шаблон «Контроллер», в котором все запросы перехватываются контроллером и отправляются отдельным контроллерам действий на основании запрошенного URL-адреса (то есть запроса маршрутизации от маршрутизатора).
источник
Frontend-контроллер должен взаимодействовать с маршрутизатором и диспетчером , чтобы принимать решение в зависимости от запроса (HTTP) против применения какого конкретно действий должны быть выполнены , а затем отправляет его.
В зависимости от того, насколько подробно конструкция является, некоторые Диспетчерская сек работа без маршрутизатора s и они делают маршрутизации их или маршрутизации подразумевается в конструкции , как это происходит при обработке запроса.
Некоторый грузоотправитель ы также передать запрос объект на посланы методы действий . Методы действия затем частично разделяют запрос, так что даже действия контроллера все еще могут выполнять некоторую маршрутизацию на основе запроса. Типичным примером этого является случай, когда платформа предлагает сделать перенаправление в качестве ответа. Это также показывает, как связаны или находятся рядом маршрутизатор и контроллер .
Различие, которое обычно рисуется здесь, заключается в том, что маршрутизация заботится о том, какой метод действия выполнить, или помогает определить его, а контроллер отвечает за выполнение этого действия, но оба обрабатывают запрос.
Как видите, различия между маршрутизатором и контроллером могут сильно различаться между реализациями и средами . В конце концов, у конкретного приложения есть свои потребности, является ли определенный уровень абстракции полезным или стоит на пути.
Однако, исходя из условий, я бы сказал, что Controller играет более важную роль в общем приложении. Это где действие идет так сказать.
источник
Маршрут отображает URL на контроллер, который является действием. Иногда роли не очень хорошо разделены в зависимости от структуры.
источник
Маршрутизаторы являются частью уровня контроллера. Механизм обработки маршрутизатора является заменой старого шаблона Front Controller (большой переключатель в index.php).
В современной среде маршрутизатор определяет прямую связь между «видом» возможных запросов и его процессором. Контроллер, напротив, получает только идентифицирующую информацию и анализирует эти данные в своем собственном контексте.
источник
Проще говоря, маршрутизатор решает задачу через приложение, обычно на основе внешнего ввода, такого как переменные GET или POST.
Маршрутизатор, однако, не является частью MVC, некоторые инфраструктуры MVC и HMVC используют маршрутизаторы, но это не привязывает их к шаблону MVC.
Кроме того, несколько ранних реализаций MVC, которые я видел, фактически полагались на файловое разделение действий с одним файлом на контроллер для доступа к отдельным контроллерам. Это намного лучше работает с приложением, потому что имея тощие контроллеры и более надежные модели, вам никогда не придется переходить к определенному методу в контроллере, и поэтому вы можете получить доступ к логике в одном месте (модели), что позволит вам комбинировать поведения.
источник
Маршрутизатор принимает
запрос
и решает, какие методы контроллера / контроллера будут обрабатывать запрос.
Контроллер принимает запросы и обрабатывает их!
На самом деле это не контроллер (с точки зрения MVC), это часть маршрутизации.
Например, возьмите [GET] uri: example.com/article/view/123. Маршрутизатор MVC проанализирует uri и найдет следующие сегменты.
представление статьи 123 По умолчанию большинство маршрутизаторов теперь создают экземпляр articleController и вызывают его метод представления, передавая 123 в качестве параметра. (В качестве альтернативы вы можете использовать метод getUriSegment (сегментIdx), это выбор дизайна для вашей среды.)
ArticleController будет иметь метод view с параметром $ articleId. Этот метод, вероятно, будет делать что-то вроде: получить указанную статью (например, из БД через модель) и затем отобразить ее (возможно, вернув представление, которому была предоставлена статья, возвращенная моделью.
источник