A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

La Arquitectura de Doctrine

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.

Componentes para las Bases de Datos Relacionales

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.

Figura D.2. Componentes de Doctrine diseñados para trabajar con base de datos relacionales Figura D.2. Componentes de Doctrine diseñados para trabajar con base de datos relacionales

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:

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.

Componentes para las Bases de Datos Documentales NoSQL

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.

Figura D.3. Componentes de Doctrine diseñados para trabajar con bases de datos documentales Figura D.3. Componentes de Doctrine diseñados para trabajar con bases de datos documentales

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:


Top