El Proyecto Doctrine está constituido por varias librerías (componentes). Cada componente de Doctrine se distribuye como un paquete que se puede instalar usando Composer y está registrado en el catalogo Packagist.org. Se instala de la misma manera en que se instalan los componentes de Zend Framework 3.
Aquí ofreceremos una breve descripción de la arquitectura de la biblioteca Doctrine para dar una idea general de sus capacidades.
Los componentes principales de Doctrine diseñados para trabajar con bases de datos relacionales se muestran en la figura D.2 marcados con color verde. Los bloques azules representan el motor PHP y las extensiones PHP. Doctrine esta construido sobre estos dos elementos.
Como podemos ver en la figura Doctrine se basa en las características del motor
de PHP y en las extensiones de PHP que son en realidad usados como controladores
para cada sistema de gestión de base de datos. Abajo en la capa base están los
componentes que constituyen el núcleo de Doctrine (como Annotations
, Common
,
etc.) que proveen las funcionalidades esenciales para los otros componentes de
más alto nivel. El componente DBAL
provee una capa de abstracción para los
diferentes tipos de base de datos. Y arriba de todo esto está el componente ORM
que provee la API para trabajar con los datos de una manera orientada a objetos.
Los componentes DoctrineModule
y DoctrineORMModule
se diseñan para la
integración con Zend Framework 3.
El componente ORM de Doctrine usa el patrón llamado Data Mapper. Este patrón dice que una tabla de base de datos se puede representar como una clase entidad de PHP. La base de datos en este patrón se considera como un tipo de repositorio (deposito de entidades). Cuando recuperamos una entidad del repositorio una sentencia SQL se ejecuta internamente y una instancia de la clase entidad de PHP se construye y sus propiedades se llenan con los datos.
Análogamente a los componentes de ZF3 los nombres de los componentes de Doctrine tiene dos partes: el nombre del proveedor ("Doctrine") y el nombre del componente (por ejemplo, "Common"). Abajo podemos encontrar una lista de los componentes de Doctrine junto con el nombre del paquete que se debe usar para instalarlo usando Composer y una breve descripción:
Doctrine\Common
. Biblioteca Común para los proyectos de Doctrine. Este
componente contiene funcionalidades usadas comúnmente. Para instalarlo
mediante composer usamos el nombre del paquete doctrine/common
.
Doctrine\Annotations
. Analizador Sintáctico de las anotaciones de Docblock.
Se instala mediante Composer con el paquete doctrine/annotations
.
Doctrine\Inflector
. Manipulaciones comunes de cadena de caracteres en
relación con las mayúsculas y minúsculas y reglas para singulares y plurales.
El paquete instalable con Composer tine como nombre doctrine/inflector
.
Doctrine\Lexer
. Biblioteca Base para un analizador de léxico que se puede
usar como un analizador sintáctico descendente recursivo.
El paquete para instalarlo usando composer es doctrine/lexer
.
Doctrine\Cache
. La Biblioteca de Cache ofrece una API orientada a objetos
para muchos backends cache. Se instala mediante composer con el paquete
doctrine/cache
.
Doctrine\DBAL
. Capa de Abstracción de Base de Datos. Es una ligera y delgada
capa en tiempo de ejecución alrededor de una API tipo PDO y un montón de extras,
características horizontales como introspección del esquema de base de datos
y manipulación mediante una API orientada a objetos. Se instala con el paquete
doctrine/dbal
usando Composer.
Doctrine\Collections
. Biblioteca de Abstracción de Colecciones. Se instala
con el paquete llamado doctrine/collections
mediante Composer.
Doctrine\ORM
. Mapeo objeto-relacional para PHP. Este es un componente de
Doctrine que provee una manera para trabajar con modelos de entidad de una
manera orientada a objetos en lugar de consultas SQL crudas. El paquete para
Composer es doctrine/orm
.
Doctrine\Migrations
. Migraciones para el esquema de base de datos que usa
Doctrine DBAL. Provee una manera consistente de manejar el esquema de base
de base de datos y de actualizarlo. Se instala usando Composer con el paquete
doctrine/migrations
.
Doctrine\DataFixtures
. Datos de Prueba para todos los Administradores de
Objetos de Doctrine. Provee un framework para crear datos de prueba para la
base de datos. Con Composer se instala mediante el paquete doctrine/data-fixtures
.
Como Doctrine usa el autocargador de PHP y el estándar PSR-4 las clases que
pertenecen a un determinado componente están en el namespace del componente.
Por ejemplo, la clase EntityManager
pertenece al componente Doctrine\ORM
y está en el namespace Doctrine\ORM
.
Los componentes de Doctrine diseñados para trabajar con bases de datos documentales NoSQL (MongoDB, CouchDB, etc) se muestran en la figura D.3 y se marcan en verde. Los bloques azules representan al motor de PHP y a las extensiones de PHP sobre las que Doctrine está construido.
Como podemos ver en la figura D.3 los componentes NoSQL de Doctrine se basan en
las características del motor PHP y en las extensiones de PHP que se pueden
considerar "controladores" para un sistema gestor de base de datos. Arriba de la
capa base están los componentes de nivel medio. El componente Common
es el
mismo componente que se muestra en la figura D.2 que provee funcionalidades
usadas comúnmente. Los componentes MongoDB
y CouchDB provee una API de bajo
nivel para sus correspondientes bases de datos. Los componentes
MongodbODM,
CouchdbODM,
OrientdbODM y
PhpcrODM proveen Mapeo objeto-documento (ODM)
para sus correspondientes bases de datos. El concepto ODM es muy similar al ORM
en el sentido de que provee la capacidad de trabajar con bases de datos NoSQL
de una manera orientada a objetos mediate el mapeo de un documento a una clase
entidad de PHP. El componente
DoctrineMongoODMModule` tiene el propósito de
integrar Doctrine con ZF3.
Abajo podemos encontrar una lista de los componentes junto con el nombre del paquete para instalar con Composer y una breve descripción:
Doctrine\MongoDB
es la Capa de Abstracción de Doctrine para MongoDB.
El nombre del paquete para instalar con Composer es doctrine/mongodb
.
Doctrine\MongodbODM
(Mapeo objeto-documento) provee una manera de mapear
documentos NoSQL a un modelo de entidad PHP. El nombre del paquete para
Composer es doctrine/mongodb-odm
.
Doctrine\MongoODMModule
es un módulo de Zend Framework 3 que provee
funcionalidades para Doctrine MongoDB ODM. Facilita la integración de Doctrine
con ZF3. El paquete para Composer se llama doctrine/doctrine-mongo-odm-module
.
Doctrine\CouchDB
es un componente que provee una API simple que se envuelve
alrededor de la API HTTP de CouchDB. El paqueta para instalarlo usando
Composer es doctrine/couchdb
.
Doctrine\CouchdbODM
es el componente de Mapeo objeto-documento para CouchDB.
Es análogo a Doctrine ORM en el sentido de que provee una manera de acceder
a la base de datos de una manera orientada a objetos. Se instala mediante
Composer con el paquete doctrine/couchdb-odm
.
Doctrine\OrientdbODM
es un conjunto de bibliotecas PHP para usar OrientDB
con PHP. El paquete para Composer se llama doctrine/orientdb-odm
.
Doctrine\PhpcrODM
es componente de mapeo objeto-documento para PHPCR.
Se instala con el paquete doctrine/phpcr-odm
.