php web-applications orm architecture database-abstraction

Ventajas de usar Doctrine para PHP



web-applications orm (2)

¿Qué proporciona Doctrine que otras capas de abstracción de PHP no ofrecen?

  1. Implementa el patrón DataMapper en lugar de ActiveRecord.
  2. Admite anotaciones , XML y YAML para el esquema.
  3. Utiliza DQL .
  4. Utiliza los beneficios de PHP 5.3+.
  5. Es rápido y tiene una gran comunidad.
  6. Excepto ORM hay ODM.

¿Es el lenguaje de consulta realmente algo en lo que desea desarrollar una aplicación web completa?

Solo una parte de la aplicación responsable de mantener los objetos comerciales debe conocer la existencia de Doctrine. Y esa parte no tiene que ser 100% basada en Doctrina.

En general, ¿la creación de una aplicación en Doctrine hace que sea más fácil de mantener y comprender?

Seguro. El código es más fácil de leer, comprender y mantener.

¿Está sobre ingeniería, y es sensato para proyectos de tamaño pequeño-mediano?

En realidad, Doctrine es bastante simple en sus fundamentos. Y es una muy buena opción para aplicaciones pequeñas, medianas e incluso grandes.

La doctrina no es la respuesta para todo y algunas veces es un poco problemática. Sin embargo, para tareas típicas es extremadamente útil. En mi humilde opinión, el mejor ORM / ODM para PHP en este momento.

Acabo de encontrar el Proyecto de Doctrina que tiene un asignador relacional de objetos y una capa de abstracción de DB. ¿Qué proporciona Doctrine que otras capas de abstracción de PHP no ofrecen? ¿Y para qué uso práctico puede colocar el ORM, además de buscar objetos a través de consultas escritas en Doctrine Query Language? ¿Es el lenguaje de consulta realmente algo en lo que desea desarrollar una aplicación web completa? ¿Funciona bien?

En general, ¿la creación de una aplicación en Doctrine hace que sea más fácil de mantener y comprender? ¿Está sobre ingeniería, y se basa en una capa de abstracción sensible para proyectos de tamaño pequeño-mediano? (<50 pantallas GUI), en lugar de trabajar directamente con MySQL.


Me gustaría agregar algunos puntos a la respuesta de Crozin, pero desafortunadamente no puedo comentarlo. Aquí están:

  • Doctrine no usa los métodos mágicos __get () y __set () para acceder a los atributos de la entidad, todos los atributos de la entidad deben tener getter / setter. Esto mejora la finalización del código IDE y no necesita mirar la estructura de la tabla DB todo el tiempo.
  • Doctrine lo abstrae por completo de los nombres de los campos de tablas reales. Una vez que asignó las propiedades de la entidad a los campos DB, utiliza nombres de propiedad en todas partes. Lo mismo para los nombres de tabla.
  • Doctrine usa un patrón de repositorio que oculta los detalles de las entidades de obtención.
  • Doctrine utiliza el enfoque de "codificar primero", por lo que puede crear entidades primero y luego generar la base de datos automáticamente. El caso inverso también es posible.
  • Doctrine tiene un potente generador de consultas, por lo que puede utilizar el patrón de generador para consultas con partes condicionales.
  • Doctrine utiliza claves y restricciones foráneas para realizar acciones en cascada y mantener la coherencia de los datos.
  • Doctrine''s UnitOfWork es algo muy bueno e inteligente, que no tiene analogía en otros ORM de PHP

En mi humilde opinión, en este momento la doctrina proporciona el mejor soporte para la finalización del código IDE y la abstracción de la capa de DB entre todos los ORM de php disponibles. No está sobrediseñado y sigue los principios SÓLIDOS.