A free and open-source book on ZF3 for beginners


Архитектура Doctrine

Проект Doctrine состоит из нескольких библиотек (компонентов). Каждый компонент Doctrine распространяется как пакет для установки Composer'ом и зарегистрирован в каталоге Packagist.org. Похожий метод использует Zend Framework 3 для установки своих компонентов.

Ниже мы предоставим краткое описание архитектуры библиотеки Doctrine, чтобы дать вам общее представление о ее возможностях.

Компоненты, поддерживающие реляционные базы данных

Основные компоненты Doctrine предназначены для работы с реляционными БД и показаны на рисунке Г.2 (помечены зеленым). Голубые блоки обозначают PHP-движок и расширения PHP, на основе которых построена Doctrine.

Рисунок Г.2. Компоненты Doctrine, предназначенные для работы с реляционными БД Рисунок Г.2. Компоненты Doctrine, предназначенные для работы с реляционными БД

Как видно из рисунка, Doctrine основана на свойствах PHP-движка и расширениях PHP, которых обычно используются как драйвера к определенным системам управления БД. Над этим базовым уровнем находятся ключевые компоненты Doctrine (такие как Annotations, Common и т.д), обеспечивающие необходимую функциональность для других компонентов верхнего уровня. Компонент DBAL предоставляет абстрактный уровень типа БД. На самом верхнем уровне находится компонент ORM, предоставляющий API для работы с данными объектно-ориентированным методом. Компоненты DoctrineModule and DoctrineORMModule` предназначены для интеграции с Zend Framework 3.

Компонент ORM использует паттерн Data Mapper (преобразователь данных). Этот паттерн указывает на то, что таблица базы данных может быть представлена как PHP-класс сущности. База данных в этом паттерне считается чем-то вроде репозитория (хранилищем сущностей). Когда вы извлекаете сущность из репозитория, выполняется внутренний SQL-запрос и создается класс сущности, чьи свойства заполняются данными.

По аналогии с компонентами ZF3, имена компонентов Doctrine состоят из двух частей: имени поставщика ("Doctrine") и имени компонента (например, "Common"). Ниже представлен список компонентов Doctrine вместе с именами их пакетов, устанавливаемыми Composer'ом, и краткими описаниями:

Так как Doctrine использует автозагрузку PHP, а также стандарт PSR-4, классы, принадлежащие определенному компоненту, "живут" в пространстве имен этого компонента. Например, класс EntityManager, принадлежащий компоненту Doctrine\ORM, живет в пространстве имен Doctrine\ORM.

Компоненты, поддерживающие документоориентированные NoSQL-БД

Компоненты Doctrine, предназначенные для работы с NoSQL-базами (MongoDB, CouchDB и т.д.) показаны на рисунке Г.3 и отмечены зеленым. Голубые блоки обозначают PHP-движок и расширения PHP, на основе которых построена Doctrine.

Рисунок Г.3. Компоненты Doctrine, предназначенные для работы с документо-ориентированными БД Рисунок Г.3. Компоненты Doctrine, предназначенные для работы с документо-ориентированными БД

Как видно из рисунка Г.3, компоненты Doctrine для NoSQL-БД основаны на свойствах PHP-движка и расширениях PHP, которые можно считать "драйверами" для определенных систем управления базами данных. Выше находятся компоненты среднего уровня. Компонент Common - тот же самый, что был показан на рисунке Г.2; он представляет широко используемый набор функций. Компоненты Mongodb и CouchDB предоставляют низкоуровневые API соответствующим базам данных. Компоненты MongodbODM, CouchdbODBM, OrientdbODM и PhpcrODM предоставляют ODM (Object Document Mappers) для соответствующих БД. Концепция ODM очень похожа на ORM тем, что тоже предоставляет возможность работать с NoSQL-БД объектно-ориентированным методом, устанавливая соответствие между документами и моделями сущностей PHP. Компонент DoctrineMongoODMModule предназначен для интеграции с ZF3.

Ниже представлен список компонентов вместе с именами их пакетов, устанавливаемыми Composer'ом, и краткими описаниями:


Top