Дорогие Друзья!
С переменным успехом, но разработка новой Flextype 0.9.0 продолжается! Дата релиза пока неизвестна, но это будет значимое обновление для проекта. Уже потрачено много человеко-часов и запушено более 1000 коммитов в репозиторий проекта.
Основные изменения в новой Flextype 0.9.0
#1 Slim Framework
Еще со времен Monstra CMS была проблема в отсутствии нормального роутинга, и эта же проблема пришла в Flextype. Роутинга у нас нет, есть только методы для работы с URI. В поисках лучшего Роутера, был выбран мощный микрофреймворк Slim.
Slim Framework - это идеальный инструмент для создания API, которые используют, переиспользуют какие-либо данные или же предоставляют к ним доступ. C помощью микрофреймворка Slim можно создавать полнофункциональные web-приложения с пользовательским интерфейсом. Он очень быстрый, имеет небольшую кодовую базу - только то, что нужно и больше ничего!
#2 Twig Template Engine
Много лет в Monstra CMS теперь и в Flextype использовался нативный PHP в роли шаблонизатора, но с переходом на Slim Framework и его простой интеграций с современным шаблонизатором Twig было принято решение перейти на Twig окончательно!
Основные особенности Twig:
- Быстрый: компилирует шаблоны в PHP код. Добавочный, относительно нативного PHP, код был сведен к минимуму.
- Безопасный: есть режим «песочницы» для проверки сомнительного кода в шаблонах. Это позволяет использовать Twig в качестве языка шаблонов для приложений, где пользователи могут менять дизайн шаблонов.
- Гибкий: основан на пластичном лексере и парсере. Это позволяет разработчику определять свои собственные тэги и фильтры, создавать свой DSL.
#3 League Glide
Полная интеграция с League Glide для произведения манипуляций с изображениями. Никаких костылей или хаков как это в текущей Flextype 0.8.3, полная нативная поддержка! Работать с изображениями можно будет просто через API как это делает например imgix.com.
#4 Editor.js
Открыл для себя идеальный редактор для работы с контентом - Editor.js
Ребята написали статью на VC.RU про то как они разрабатывали этот редаткор, история интересная, рекомендую почитать:
Для просмотра ссылки Войди или Зарегистрируйся
Основная концепция Editor.js — блочная структура и чистые данные в виде JSON на выходе.
В отличие от большинства редакторов, где пользователь работает с текстом внутри одной редактируемой обертки, в Editor.js каждый структурный элемент статьи — блок — это отдельный редактируемый элемент.
Блоки могут быть какие угодно: абзацы, заголовки, цитаты, списки, изображения, твиты, опросы и так далее.
JSON данные:
Результат:
#5 Respect Validation
В новой Flextype 0.9.0 будет использоваться Respect Validation для валидации данных. Respect Validation - это самый лучший валидатор, который когда либо был написан на PHP. Он предоставляет более 100 (полностью протестированных) валидаторов.
#6 Переход на JSON вместо YAML
Еще окончательно не решил это, но скорее всего да чем нет. Так как хочется иметь возможность нативно хранить JSON из Editor.js без какой либо дополнительной конвертации. А так же хранение данных в JSON формате позволит их располагать не только в файлах (Flat File) но и в MongoDB или PostgreSQL (с помощью драйвера). Я думаю что такой подход поможет в будущем с масштабируемостью проектов разработанных на Flextype.
#7 Плагины Site и Admin
Вместе с новой Flextype 0.9.0, появится новый плагин Site и переписанный плагин Admin. По сути Flextype будет предоставлять простой и понятный программный API для работы с данными, а плагины уже будут решать что с этими данными делать. Есть вероятность, что в Flextype 0.9.0 появится и Public API, который позволит создавать приложения любой сложности для любых устройств используя Flextype Public API как в Headless CMS — но если это не появится в этой версии, то в следующей версии будет Flextype Public API
Все официальные плагины также будут переписаны на новую архитектуру.
#8 League Event
В Flextype 0.9.0 будет использоваться простая, но эффективная библиотека для работы с событиями системы League Event вместо Flextype Events.
Я описал вкратце про ключевые особенности новой Flextype 0.9.0 над которыми работаю. Работы проделано много и много еще предстоит сделать. Для контроля качества кода использую Scrutinizer CI
За прогрессом разработки вы можете следить вот тут:
Для просмотра ссылки Войди или Зарегистрируйся
Пост в блоге: Для просмотра ссылки Войди или Зарегистрируйся