LIMB

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Limb3 PHP Web Application Framework
LIMB logo.gif
Тип

CMF

Написана на

PHP

Операционная система

Кроссплатформенное программное обеспечение

Последняя версия

2007.4 (31 декабря 2007)

Лицензия

LGPL

Сайт

limb-project.com

Limb3 — это свободный PHP5 фреймворк, приспособленный к быстрой разработке приложений, без существенного усложнения поддержки получившихся продуктов. Limb3 не является монолитным фреймворком, что позволяет использовать его в качестве библиотеки компонентов. Limb3 состоит из набора относительно независимых пакетов, каждый из которых должен решает свою задачу. Каждый пакет более или менее независим от других, и для разрешения межпакетных зависимостей используется схема, принятая в PEAR.

История и идеология[править | править исходный текст]

Первый официальный релиз Limb2 состоялся весной 2004 года, однако работа велась около года и до этого. Осенью 2004 года Limb занял 3-е место на Zend PHP 5 Contest[1][2]. Два года использования выявили плюсы и недостатки 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
MAIL Обертка 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) Расширенный текстовый редактор для ввода гипертекста

Примечания[править | править исходный текст]

  1. Perrick Penet. Introduction to SimpleTest. FOSDEM, Bruxelles (2005). Проверено 7 февраля 2012. Архивировано из первоисточника 11 сентября 2012.
  2. PHP5 Coding Competition Winners, Google Blogoscoped (26 октября 2004). Проверено 7 февраля 2012.

Литература[править | править исходный текст]

Ссылки[править | править исходный текст]