Приветствую!
Предлагаю обсудить плюсы и минусы фреймворка, что я разрабатывал. Несколько слов зачем это нужно при существующем богатстве выбора:
- я люблю велосипеды, которые ездят как мне нравится, т.е. если считаю, что у меня получится что-то лучше, то мне не лень написать своё.
- очень хотелось ускорить и упростить процесс разработки и модификации приложений. существующие средства в некоторых смыслах меня расстраивали.
- при всей моей любви к MVC, распределение работ в обычном случае получается не оптимальным
Поясню последний пункт, который, собственно, и был мотивационным. Работало 3 человека на проекте. Один делал Модель, другой делал Вид и третий Контроллеры. Писатель модели написал апи, как пользоваться, на какие запросы какие ответы приходят и вообще какова общая логика внутренних данных, писатель Вида по макетам написал хтмл-шаблоны. Писатель Контроллеров по спецификациям написал контроллеры и стали тестировать. Выясняется, что когда одного из трёх нет, то виноватого найти очень сложно. Модельер смотрит: «мне пришли не те данные», ждём контролёра. Выясняется, что данные в неправильном формате послал Вид. После разработки выясняется, что какие то куски надо продублировать по разным страницам, соответственно, это работа сразу для двух человек: один правит шаблоны, другой контроллеры. В итоге темп разработки страдает.
Это породило идею: контроллеры должны перестать быть самостоятельной сущностью и стать придаточной. Контроллеры стали декларативными. В итоге в модели MVC участие в разработке требуется только у двух (собирательный образ) человек: один пишет Модель, другой пишет Вид, а контроллеры как самостоятельный вид пропали. Это не значит, что теперь прямо из шаблонов можно делать запросы к базе данных, это не так, но добавить новый блок данных в шаблоны теперь задача только одного человека, который собственно и отвечает за внешний вид.
Дальнейшее развитие породило автоматическую валидацию параметров запросов, декларирование действий и многое другое. Запросы к Модели возможно делать ajax-ом, по submit/get-у данных или запросом данных из шаблонов.
Документация на текущий момент очень слабая, примеров мало, из плюсов простота кода и вообще подхода. Фреймворк опирается на протокол PSGI _без_ Plack, вообще внешних тяжёлых зависимостей нет. Протестирована только конфигурация на базе nginx+uwsgi, поскольку я в общем-то не вижу необходимости в других. Глубоких бенчмарков не проводилось, но по внешним признакам всё очень быстро работает.
Ссылка на (фиговую) документацию на русском языке https://github.com/pef-secure/pef-front-psgi-dist/blob/master/lib/PEF/Front/I...