CEKTA FRAMEWORK
Это набор абстракций и их имплементаций для быстрой и удобно разработки, а также для деплоя в прод решений: Создание API это одно из основных использований фреймворка.
Используются следующие решения:
- PSR-15: HTTP Server Request Handlers реализуете вы нужные приложению endpoints.
- CEKTA ROUTING реализованно с помощью адаптера cekta/routing-fastroute для nikic/fast-route.
- Roadrunner Server RR.
Чем отличается от других фреймворков
- Минимализм и простота.
- Модульность и расширяемость.
- Быстрый старт (skeleton).
- Использование проверенных решений.
Минимализм
FRAMEWORK не является fullstack framework и не тянет за собой работу с FRONTEND, так как это целый отдельный мир, который лучше реализовывать отдельным репозиторием, по стандартам FRONTEND.
В framework реализуются только те абстракции которые наиболее необходимы backend в большинстве проектов.
Например, framework не предоставляет абстракций для работы с БД, так как предпочтения работы с БД могут быть различными. Одним нужно работать с соединением напрямую (PDO или минимальные обертки), другим нужны крупны ORM вроде doctrine/orm, третьи не видят работы с бд без Active Record, четвертые предпочитают сами реализовывать репозитории и тд.
Все это взаимоисключающие требования и заниматься созданием новых уникальных библиотек по работе с БД в рамках фреймворка не лучшая идея, проще сфокусироваться на развитие других полезных вещей, а библиотеку для работы выберет конечный пользователь (разработчик) исходя из требований проекта и навыков команды, таких библиотек огромное количество.
Аналогичным образом выбор какую БД использовать в проекте pgsql или mysql и тд, какой версии ? Это все индивидуальные особенности каждого проекта и предпочтений команды, задача фреймворка это позволить сделать такой выбор конечному пользователю (разработчику).
Мы стремимся к тому чтобы после установки проекта нам не приходилось “выпиливать” ничего из проекта, при этом должно быть минимум тело движений для его запуска в разработке или сборке для прода.
Модульность и расширяемость.
Раз фреймворк предоставляет минимально необходимый набор инструментов, значит у большинства будет необходимость в расширение стандартной поставки, это должна быть штатная и ожидаемая вещь.
Расширяемость достигается за счет гибкой системы внедрения зависимостей cekta/di, а также абстракций framework в виде Module и Project и адекватным инструментам разработки вроде docker.
Быстрый старт (skeleton).
Как бы не было легко расширять фреймворк, все равно современный проект содержит большое количество дефолтных конфигурационных файлов (composer.json, .gitignore, docker-compose.yml, rr.yaml и тд).
Хочется просто взять и начать работать, для этого сделан пример проекта SKELETON который позволяет как начать разработку, так и подготовить его к production окружению!!!
Использование проверенных решений.
Некоторые решения нет смысла создавать с нуля в них могут вложены человека/годы разработки например fastroute, roadrunner (RR).
Гораздо лучше их использовать адаптируя под свои ожидания, это позволяет получить максимальную производительность фреймворка минимальной ценой и низкий порог входа.