Какие фреймворки PHP НЕ используют фронтальный контроллер?

Кажется, что более популярные фреймворки используют фронт-контроллер. Я понимаю преимущества переднего контроллера (уменьшает избыточность и упрощает расширяемость), но

Я хочу знать, какие фреймворки PHP НЕ используют фронт-контроллер. Кроме того, меня интересуют те рамки, которые используют контролеры страниц, и которые рекомендуют использовать реальную структуру каталогов файлов для URL-адресов, а не переписывать почти каждый URL-адрес или использовать беспорядок строки запроса. Кроме того, мне интересно узнать, какие из фреймворков, которые не используют фронт-контроллер, реализуют MVC. Наконец, любые дополнительные сведения, которые вы можете предоставить в инфраструктурах не-фронт-контроллера, были бы полезны, в частности, какую версию PHP она использует или требует. (Я знаю, что могу получить эту более позднюю информацию с других сайтов, так что это не так важно.)

Рассмотрим слова Расмуса Лердорфа (оригинальный создатель PHP):

"Что касается MVC, если вы используете его тщательно, он может быть полезен в Интернете выражение. Просто убедитесь, что вы избегаете соблазна создать один монолитный контроллер. Веб-приложение по самой своей природе серию небольших дискретных запросов. Если вы отправляете все ваши запросы через один контроллер на одной машине, которую вы только что победили это очень важная архитектура. Дискретность дает вам масштабируемость и модульность. Вы можете разбить большие проблемы в серии очень небольшие и модульные решения, и вы можете развернуть их на столько же серверов, как вам нравится. Вам нужно связать их в некоторой степени в большинстве случаев вероятно, через какой-то серверный хранилище данных, но сохраняйте их как отдельные, как возможное. Это означает, что вы хотите, чтобы ваши взгляды и контроллеры были очень близки к друг друга, и вы хотите, чтобы ваши контроллеры были как можно меньше". - Расмус Лердорф

UPDATE: Большое спасибо пользователю Alex за первое, многообещающее больше ответов. Его ответ QCubed..

"помните, что передний контроллер (index.php) и MVC являются отдельными узоры. То есть, у вас может быть структура MVC, которая НЕ реализовать или потребовать передний контроллер. Мои рамки выбора, QCubed, похоже, так." - Alex

Теперь, если мы сможем снова открыть этот вопрос, мы можем продолжить то, что мы начали, и составить список фреймворков, которые не используют фронт-контроллер. Пожалуйста, проголосуйте за повторное открытие. Спасибо.

Ответ 1

Я все еще изучаю Symfony2, поэтому, если я не ошибаюсь, думаю, у вас могут быть разные передние контроллеры. И код будет разделен в разных пакетах.

По умолчанию у него два контроллера fron, один для производства, а другой для разработки. Однако я думаю, что вы можете создать более одного (по одному для каждой страницы)

Надеюсь, что это поможет

Ответ 2

Интересный вопрос, хотя я не уверен, что такое ваша конечная игра. Контроллер в основном "загружает" структуру в работоспособное состояние. Мой опыт заключается в Symfony, Zend и CakePHP, и вы можете сказать, что контроллеры, используемые в Symfony, довольно короткие (~ 50 строк кода). Однако базовый код довольно обширен, но этот код выполняет ряд функций, таких как настройка ORM, кэширование сильно используемых массивов (создание статических файлов в каталоге /cache ) и инициализация автозагрузчика для вызовов файлов, просто чтобы назвать несколько.

В контексте Symfony Framework у вас есть основной контроллер, но у вас также есть мини-контроллеры или, как вы выразились, контроллеры страниц, эти контроллеры называются "действиями". Действие действует как мост между пользовательским запросом и различными атрибутами вашего приложения, которые могут включать в себя хранилища файлов и данных, обработку запросов, перенаправление пользователей и т.д. Как и в случае с основным контроллером, действия должны быть легкими, в основном состоящими из вызовов API базовые классы и функции.

Я действительно использовал Zend в Symfony, чтобы заполнить пробелы в функциональности, которые Symfony не предоставляет. Итак, на ваш вопрос, я использую функции Zend без какого-либо взаимодействия с контроллером. Все, что мне нужно сделать, это инициализировать Zend в автозагрузчике (b/c Zend правильно помещается в имена). Также сделал это с CakePHP, чтобы воспользоваться классом Inflector, без использования контроллера, просто вызывает функциональность, которую я не хотел писать сам.