LIMB
Limb3 — это свободный PHP5 фреймворк, приспособленный к быстрой разработке приложений, без существенного усложнения поддержки получившихся продуктов. Limb3 не является монолитным фреймворком, что позволяет использовать его в качестве библиотеки компонентов. Limb3 состоит из набора относительно независимых пакетов, каждый из которых должен решать свою задачу. Каждый пакет более или менее независим от других, и для разрешения межпакетных зависимостей используется схема, принятая в PEAR.
История и идеологияПравить
Первый официальный релиз Limb2 состоялся весной 2004 года, однако работа велась около года и до этого. Два года использования выявили плюсы и недостатки Limb2, и в конце 2005 года началось разделение кодовой базы на более узкоспециализированные пакеты. Полностью отказаться от Limb2 было на тот момент невозможно, поэтому было решено создать полностью отдельную ветку Limb3. При разработке предъявляются высокие требования к качеству кода. Около 90% кода Limb3 покрыто модульными тестами. В разработке используются Agile-методики: TDD, парное программирование, ContinuousIntegration и проч. Limb3 не накладывает на разработчиков никаких ограничений в вопросах интеграции с другими фреймворками.
Основные пакеты limb3 и их функцииПравить
coreПравить
Базовый пакет, отвечающий за поддержку подключения других пакетов. Содержит базовые классы для работы с различными контейнерами данных и коллекциями. Практически все остальные пакеты зависят от него.
- подключение классов и поддержка отложенной загрузки кода (autoload)
- отложенная инициализация объектов
- контейнеры данных (как списковые, так и несписковые контейнеры данных)
- объектные формы call_back вызовов
- различные утилитарные классы для сериализации, создания декораторов на лету, упрощению работы с массивами
toolkitПравить
Пакет является реализацией паттерна Dynamic Service Locator. Его суть состоит в том, что есть некий легко доступный объект, который является общим местом для доступа ко всем популярным объектам (сервисам) и в том, что возможности этого объекта можно легко расширять.
macroПравить
Пакет реализует относительно простой компилирующий шаблонизатор, со следующими особенностями:
- никаких ограничений на РНР-вставки
- включение и враппинг шаблонов (с поддержкой зон)
- облегчённая поддержка контекстов данных (локальные и глобальные данные)
- отсутствие runtime дерева компонентов
- модификация данных производится с помощью фильтров
dbal (Data Base Abstraction Layer)Править
Пакет предоставляет объектно-ориентированный доступ к базе данных, абстрагируясь от деталей конкретной реализации. В данный момент поддерживаются следующие базы данных: MySQL (MySQLi), PostgreSQL, SQLite и Oracle.
active_recordПравить
Реализация паттерна ActiveRecord, отчасти схожего с реализацией подобного паттерна в Ruby on Rails.
- автоматическое определение наименований и типов полей таблицы
- поддержка отношений один-к-одному, один-ко-многим и много-ко-многим
- поддержка ValueObjects
- поддержка наследования в рамках одной таблицы (Single Table Inheritance)
- поддержка «отложенной загрузки» (LazyLoading) для коллекций
- тесная интеграция с шаблонизатором
web_appПравить
Пакет позволяет строить веб-приложения, применяя паттерн MVC. Сам пакет предоставляет классы для реализации только Controller-составляющей. Выбор средства для реализации модели и отображения всё равно лежит на конечном разработчике приложения, хотя WEB_APP реализован таким образом, чтобы максимально упростить работу с приложениями, где в качестве модели будут выбраны «родные» для Limb3 пакеты DBAL и ACTIVE_RECORD, а в качестве отображения — пакет VIEW.
tests_runnerПравить
Пакет для организации и запуска SimpleTest тестов для приложений, которые содержат большие тестовые наборы. В поставку с пакетом входят классы, которые позволяют выполнять тесты в cli или web-режиме.
Полный список пакетов limb3, с описаниемПравить
Название | Зависимости | Назначение |
---|---|---|
ACL | CORE | Пакет реализует функционал ACL |
ACTIVE_RECORD | CORE, DBAL, VALIDATION | Реализация паттерна ActiveRecord |
CACHE | CORE | Набор классов, предназначенных для обобщения различных техник кеширования |
CALENDAR | JavaScript календарь | |
CLI | CORE | Различные средства, упрощающие разработку CLI интерфейса |
CONFIG | CORE | Различные средства для работы с конфигурационными файлами |
CORE | Пакет, отвечающий за поддержку подключения других пакетов. Содержит базовые классы для работы с различными контейнерами данных и коллекциями. Практически все остальные пакеты зависят от него. | |
DATETIME | CORE | Пакет для работы с временем, датой, временными периодами |
DBAL | CORE, TOOLKIT, NET | Пакет, абстрагирующий работу с БД |
FS | CORE | Различные средства для работы с файловой системой: базовые файловые операции, нахождения файлов по псевдонимам и др. |
FILTER_CHAIN | CORE | Имплементация паттерна Intercepring Filter. |
I18N | CORE, TOOLKIT, VALIDATION, CONFIG, UTIL, CLI, DATETIME | Пакет, упрощающий процесс интернационализации приложений |
IMAGEKIT | CORE | Примитивные средства, абстрагирующие работу с графическими библиотеками |
JS | Пакет, содержащий JavaScript-средства для модульной загрузки кода и набор базовых JavaScript классов | |
MACRO | CORE, FS | Шаблонизатор MACRO |
Обертка PHPMailer библиотеки, предназначенной для отсылки почты | ||
NET | CORE, UTIL | Набор классов в для работы с сетевыми протоколами (в основном с HTTP) |
SEARCH | CORE, DBAL, I18N | Средства для организации индексирования и поиска (пакет длительное время не находится в разработке) |
SESSION | CORE, DBAL | Средства для работы с PHP-сессиями и абстрагирования источника хранения сессионных данных(пока только БД) |
TESTS_RUNNER | Тестовая оболочка, основанная на SimpleTest, позволяющая организовать группы тестов, используя расположение тестов в файловой системе | |
TOOLKIT | CORE | Средства для организации Dependency Injection (реализация Dynamic Service Locator) |
TREE | CORE, TOOLKIT, DBAL, VALIDATION, CACHE | Пакет для организации хранения деревьев в БД |
VALIDATION | CORE | Пакет, предоставляющий различные средства валидации данных |
VIEW | WACT[опционально], MACRO[опционально] | Пакет, содержащий средства для работы с представлением |
WACT | Шаблонизатор WACT | |
WEB_APP | CORE, CONFIG, FILE_SCHEMA, TOOLKIT, I18N, WACT, CLI, CACHE, DBAL, VALIDATION, ACTIVE_RECORD, SESSION, MAIL, DATETIME, FILTER_CHAIN, NET | Набор различных средств для построения web-ориентированных приложений |
WYSIWYG | CORE, WEB_APP, WACT (MACRO) | Расширенный текстовый редактор для ввода гипертекста |
СсылкиПравить
Исходный текст этой статьи был опубликован в русской Википедии , но был там удален. Так же, как и в этом проекте, тексты, размещённые в Википедии, доступны на условиях лицензии GNU FDL. |