Что такое xPDO?
xPDO (open eXtensions to PDO) - это легковесная ORB (object-relational bridge, объектно-реляционный мост) библиотека, работающая на PHP 5, которая помогает пользоваться преимуществами последних стандартов работы с базами данных в PHP, расширением PDO (PHP Data Objects). xPDO реализует очень простой, но эффективный паттерн для доступа к данным Active Record, а также гибкую модель предметной области, позволяющую отделить логику области от логики, специфичной для той или иной базы данных, когда это вам нужно.
Но xPDO - это немного больше, чем простая реализация паттерна. Это еще и способ абстрагирования бизнес-логики приложения от фактически используемых для доступа к данным в БД SQL-запросов и связанных переменных (prepared statements), а также легко описать и обеспечить реализации объектной модели для нескольких целевых платформ баз данных.
Задачей xPDO является быстрое обеспечение фундамента веб-приложения, который легко расширить до полноценной объектной модели, которая может быть оптимизирована насколько это возможно без зависимостей от конкретной платформы.
Причины, по которым следует использовать xPDO
xPDO обладает несколькими высокоуровневыми особенностями:
- Объектно-ориентированный мост (ORB), который представляет структуры реляционных баз данных в виде объектов ООП;
- Использует PDO, слой доступа к базам данных, принятый за стандарт для PHP 5.1+, который обеспечивает быстрое взаимодействие с различными реляционными базами данных;
- Обеспечивает реализацию PDO для версий PHP 4.3.x, 4.4.x и 5.0.x. Хотя некоторые из установок 5.0.x могут содержать родные расширения PDO, добавленные через PECL, но и поддержка для PHP 4, хотя это и имеет некоторые ограничения в использовании всего потенциала PDO, это одна из главных целей всего проекта xPDO;
- Код ультра-легкий и загружает только то, что ему нужно, по требованию, поэтому практически не добавляет накладных расходов вашим скриптам. Этого добились с помощью использования общих методов и аксессоров и использованием только PHP кода (например, не используется парсинг XML-конфигурации или другие способы сериализации);
- Стимулирует оптимизацию платформы в соединении с объектной абстракцией;
- Поддерживает любые базы данных, доступные через реализацию драйвера PDO. (Замечание: на текущий момент поддерживаются MySQL, MSSQL Server и SQLite);
- Быстрая генерация классов и карты метаданных из схемы модели xPDO. (Замечание: схема модели задается в формате XML, пример - схема MODX);
- Быстрая генерация xPDO-схемы по существующей схеме базы данных.
Паттерны проектирования
При разработке xPDO использовались несколько паттернов проектирования, которые хорошо описаны в книге Мартина Фаулера «Архитектура корпоративных программных приложений» («Patterns of Enterprise Application Architecture»). Среди них есть следующие и не только:
- Domain Model
- Active Record
- Data Mapper
- Lazy Load
- Identity Field
- Single Table Inheritance
- Metadata Mapping
- Query Object
Перед программированием с использованием xPDO будет очень полезно ознакомиться с этими паттернами (и другими из каталога Фаулера); понимание этих концепций поможет не только в изучении xPDO, но и многих других вещей, связанных с программированием.