Pull to refresh

Фреймворк Limb, версия 2010.1 RC2

Reading time4 min
Views2.6K
С праздником, коллеги! А у нас тут подарок назрел. Ну или кара небесная. Пока не понятно. Если вкратце, то мы напряглись, собрались, сконцентрировались, и готовы представить на суд общественности новую версию нашего фреймворка Limb. Ну, правда, не совсем версию, а второй релиз-кандидат — 2010.1 RC2.

Для тех, кто не в курсе, Limb это PHP-фреймворк, ориентированный на быструю и гибкую разработку. Наши приоритеты/ гибкость — качество кода — скорость разработки.

Limb одним списком:
  • Парадигма — MVC
  • DependencyInjection — Toolkit(императивное инстанцирование)
  • Организация приложения — InterceptingFilter
  • ORM — ActiveRecord
  • DBAL — собственная реализация (MySQL 4.1+, SQLite, Oracle (OCI8), PostgreSQL 8.2+, Linter)
  • Шаблонизатор — Macro, WACT, Blitz и т.д.
  • Тестирование — на основе SimpleTest

Тем, кому не терпится порвать нас в клочья критикой и баг-репортами, прошу забрать код, вооружиться документацией и репортить, репортить, репортить.

А теперь подробнее о том, что у нас есть.

Пакеты Limb



Core — ядреный


Пакет содержит глобальные функции для отложенной загрузки кода, работы с переменными окружения, пакетами. Помимо этого, он содержит базовые контейнеры данных (сэты, объекты, коллекции). И всякие утилитарные штуки: lmbArrayHelper для жонглирования массивами и коллекциями, lmbHandle, для любителей отложить что-то на потом и lmbDelegate, для тех кто не хочет делать сам, и предпочитает делегировать.

Toolkit — гибкость дающий

Toolkit – реализация паттерна Dynamic Service Locator, одного из методов Dependency injection. Суть в том, что есть некий легкодоступный объект, который является общей точкой для доступа ко всем популярным объектам (сервисам). Он является своеобразным клеем, который удерживает код от сползания в бездну статических зависимостей.

ActiveRecord — рутины лишающий

ActiveRecord, как несложно догадаться из названия, является одной из возможных реализаций ORM(Object-Relation Mapping). Первоначальная идея пакета взята из фреймворка Ruby-On-Rails. RoR в данном случае выступали в качестве функционального ориентира. И вот, что он умеет/
DBAL — данными манипулирующий

Не любите ORM? А вот вам ДБАЛ! DBAL(DataBase Abstraction Layer) предоставляет объектно-ориентированный доступ к базе данных, абстрагируясь от деталей конкретной реализации. Архитектура пакета DBAL вполне стандартна:
  • Driver – базовые классы, которые абстрагируют доступ к базе данных
  • Query — группа классов, позволяющих тем или иным образом инкапсулировать SQL запросы разного назначения (SELECT, INSERT, UPDATE, DELETE)
  • Criteria — группа классов, позволяющих строить условия для SQL запросов в объектной форме
View, WACT и Macro — на экран выдающие

Limb следует парадигме MVC, как средству логичного разбиения кода на относительно независимые куски. Пакет View представляет одноименный слой MVC, и представляет из себя абстракцию от конкретного механизма шаблонизации. В данный момент основным шаблонизатором в limb является Macro, пришедший на смену WACT’у. Помимо них View поддерживает Blitz, JSON и нативный PHP.
Macro – это своего рода syntactic sugar для нативного РНР. Мы не пошли по пути хэлперов, а остались верны тегам и фильтрам. Кратко о Macro:
  • промежуточная компиляция в PHP-код
  • две области видимости переменных/ глобальная и локальная (на уровне шаблона)
  • механизм фильтров
  • шаблоны комбинируются через include (включение дочернего шаблона), wrap (включение в родительский шаблон) и template+apply (применение шаблона)
  • поддерживается концепция слотов
  • готовые теги для работы со списками, деревьями, пейджингом, формами и их полями, ссылками и интернационализацией
  • готовые фильтры для различного форматирования строк, чисел, дат и специальных форматов
  • расширяем через собственные теги и фильтры

WebApp и CMS — всю эту радость объединяющие

Я уже говорил о MVC? А вот и вторая его часть — WebApp. Пакет предоставляет классы для реализации только Controller составляющей. Выбор средства для реализации модели и отображения все равно лежит на конечном разработчике приложения. С другой стороны пакет реализован таким образом чтобы максимально упростить работу с приложениями, где в качестве модели будут выбраны “родные” Limb пакеты DBAL и ActiveRecord, а в качестве средства отображения – пакет View. В общем двояко, а местами и трояко.

Хочите админку и средства быстрого ее расширения? Их есть у меня — пакет CMS! Аутентификация, идентификация и прочие -ции, средства для быстрого построения CRUD-интерфейсов, фильтров, форм.

TestsRunner — за качеством бдящий

Пакет для организации и запуска SimpleTest-тестов для приложений, с большим количеством тестов и сложными многоярусными фикстурами. Пакет не имеет зависимостей от других пакетов, поэтому может быть аккуратно выпилен из Limb'а лобзиком, для использования отдельно.

И прочие

Список со всеми 37(ужас!) пакетами. Вот самые важные/
  • CACHE(2) — абстракции от хранилища кэша(файлы, APC, БД, память, сессии) и средства для работы с кэшами(защита от dog-pile, тэггирование и логирование)
  • CONSTRUCTOR — консольный генератор кода (модели, контроллеры, админка)
  • FILTER_CHAIN — имплементация паттерна Intercepring Filter, основы Limb-приложений
  • MIGRATE — синхронизация схемы базы между разработчиками и привязывание ее к коду
  • TASKMAN — у нас и Ant свой, да

Выводы


1. Зачем ты это все написал, если это не stable?
Собственно и написал, чтобы это стало stable. Чем больше приложений, тем стабильнее код. Некоторые новые пакеты(migrate, profile, constructor) мне кажутся сырыми, не смотря на то, что используются в живых проектах. Ну и «новую кровь» в разработку привлечь хотелось.
2. Где взять это?
Как я уже говорил, репозиторий расположен на GitHub, и там же можно скачать код версии 2010.1 RC2.
3. С какой стороны его кусать?


Ну и небольшое видео того, рождался и рос Limb.

ЗЫ: Прошу сильно не пинать за ошибки, ибо в предверии этого светлого момента не спал уже 30 часов. Напишите мне в личку, и мой портативный клон Человека-Грызлова все тихо поправит.
ЗЫЫ: Еще раз с праздником! Простого кода, легкой отладки и побольше счастливых озарений, делающих нашу работу любимой!
Tags:
Hubs:
+31
Comments40

Articles