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

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

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

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

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

ОБНОВЛЕНИЕ: Большое спасибо пользователю Alex за первое, надеюсь, больше ответов. Его ответ QCubed ..

«Помните, что фронт-контроллер (index.php) и MVC – это отдельные шаблоны, т. е. у вас может быть структура MVC, которая НЕ реализует или не требует переднего контроллера. Моя выборка, QCubed, оказывается такой». – Алекс

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

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

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

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

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

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

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