Проект Doctrine состоит из нескольких библиотек (компонентов). Каждый компонент Doctrine распространяется как пакет для установки Composer'ом и зарегистрирован в каталоге Packagist.org. Похожий метод использует Zend Framework 3 для установки своих компонентов.
Ниже мы предоставим краткое описание архитектуры библиотеки Doctrine, чтобы дать вам общее представление о ее возможностях.
Основные компоненты Doctrine предназначены для работы с реляционными БД и показаны на рисунке Г.2 (помечены зеленым). Голубые блоки обозначают PHP-движок и расширения PHP, на основе которых построена 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\Common
. Общая библиотека для проектов Doctrine. Этот компонент предоставляет
широко используемый набор функций. Имя пакета, устанавливаемого Composer'ом - doctrine/common
.
Doctrine\Annotations
. Парсер многострочных комментариев. Имя пакета, устанавливаемого Composer'ом -
doctrine/annotations
.
Doctrine\Inflector
. Манипуляции со строками, касающиеся изменения регистра и единственного/множественного числа.
Имя пакета, устанавливаемого Composer'ом - doctrine/inflector
.
Doctrine\Lexer
. Базовая библиотека для лексического анализатора, который может использоваться в нисходящем синтаксическом анализе и методе рекурсивного спуска.
Имя пакета, устанавливаемого Composer'ом - doctrine/lexer
.
Doctrine\Cache
. Библиотека для кэширования, предлагающая объектно-ориентированный API для многих бэкендов кеша.
Имя пакета, устанавливаемого Composer'ом - doctrine/cache
.
Doctrine\DBAL
. Абстрактный уровень БД. This is a lightweight and thin runtime layer around
a PDO-like API and a lot of additional, horizontal features like database schema introspection and
manipulation through an object oriented API. Имя пакета, устанавливаемого Composer'ом - doctrine/dbal
.
Doctrine\Collections
. Библиотека для абстракции коллекций. Имя пакета, устанавливаемого Composer'ом -
doctrine/collections
.
Doctrine\ORM
. Компонент для объектно-реляционного отображения. Позволяет работать с моделями сущностей
объектно-ориентированным методом вместо запросов на чистом SQL. Имя пакета, устанавливаемого Composer'ом - doctrine/orm
.
Doctrine\Migrations
. Миграции схем БД с использованием Doctrine DBAL. Предоставляет последовательный
способ управления схемой БД и ее обновления. Имя пакета, устанавливаемого Composer'ом - doctrine/migrations
.
Doctrine\DataFixtures
. Данные предварительной настройки для всех менеджеров объектов Doctrine.
Предоставляет фреймворк для создания данных предварительной настройки. Имя пакета, устанавливаемого Composer'ом -
doctrine/data-fixtures
.
Так как Doctrine использует автозагрузку PHP, а также стандарт PSR-4, классы, принадлежащие определенному компоненту,
"живут" в пространстве имен этого компонента. Например, класс EntityManager
, принадлежащий компоненту Doctrine\ORM
,
живет в пространстве имен Doctrine\ORM
.
Компоненты Doctrine, предназначенные для работы с NoSQL-базами (MongoDB, CouchDB и т.д.) показаны на рисунке Г.3 и отмечены зеленым. Голубые блоки обозначают PHP-движок и расширения PHP, на основе которых построена 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'ом, и краткими описаниями:
Doctrine\MongoDB
- уровень абстракции Dotrine MongoDB. Имя пакета, устанавливаемого Composer'ом -
doctrine/mongodb
.
Doctrine\MongodbODM
(Object Document Mapper) предоставляет возможность устанавливать соответствие между документами NoSQL и
моделями сущностей PHP. Имя пакета, устанавливаемого Composer'ом - doctrine/mongodb-odm
.
Doctrine\MongoODMModule
- модуль Zend Framework 3, обеспечивающий функциональность Doctrine MongoDB ODM.
Он служит для простой интеграции с ZF3. Имя пакета, устанавливаемого Composer'ом -
doctrine/doctrine-mongo-odm-module
.
Doctrine\CouchDB
- компонент, предоставляющий API, который является оберткой для API CouchDB для доступа по HTTP.
Имя пакета, устанавливаемого Composer'ом -doctrine/couchdb
.
Doctrine\CouchDB
- компонент CouchDB Document Object Mapper. Аналогично Doctrine ORM он
предоставляет возможность доступа к БД объектно-ориентированным методом. Имя пакета, устанавливаемого
Composer'ом -doctrine/couchdb
.
Doctrine\OrientdbODM
- набор библиотек PHP для использования OrientDB. Имя пакета, устанавливаемого
Composer'ом -doctrine/couchdb
.
Doctrine\PhpcrODM
- это Object Document Mapper для PHPCR. Имя пакета, устанавливаемого
Composer'ом -doctrine/couchdb
.