¿Fue útil?

Solución

  

¿Qué proporciona doctrina de que otras capas de abstracción PHP no lo hacen?

  1. patrón de implementos DataMapper en lugar de ActiveRecord.
  2. anotaciones , XML y YAML para el esquema.
  3. DQL .
  4. Usos beneficios de PHP 5.3 +.
  5. Es rápido y tiene la gran comunidad.
  6. Excepto ORM existe ODM.
  

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

Sólo una parte de la aplicación responsable de mantener negocios objetos deben ser conscientes de la existencia de Doctrina. Y esa parte no tiene que ser 100% basado en la doctrina.

  

En general qué la construcción de una aplicación en Doctrina hacen que sea más fácil de mantener y entender?

Por supuesto. El código es más fácil de leer, entender y mantener.

  

Es ingeniería excesiva, y es sensato para proyectos de tamaño pequeño-medio?

En realidad Doctrina es bastante simple en sus fundamentos. Y es una muy buena opción, incluso para algunas aplicaciones de gran tamaño pequeño, mediano y grande.


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

Otros consejos

Me gustaría añadir algunos puntos a la respuesta de Crozin, pero por desgracia no puede comentarlo. Aquí están:

  • Doctrina no utiliza métodos mágicos __get () y __set () a los atributos de entidad de acceso, todos los atributos de la entidad deben tener captador / definidor. Esto mejora IDE finalización de código y no es necesario mirar a la estructura de la tabla db todo el tiempo.
  • Doctrina que abstrae completamente de nombres de campo de tabla reales. Una vez que ha correlacionado propiedades de la entidad a los campos de base de datos - que utiliza los nombres de propiedades en todas partes. Lo mismo para los nombres de tabla.
  • Doctrina utiliza patrón repositorio que oculta los detalles de la obtención de entidades.
  • Doctrina utiliza enfoque de "primero el código", para que pueda crear entidades primera y luego generar la base de datos de forma automática. caso inverso también es posible.
  • Doctrina tiene una potente generador de consultas, para que pueda utilizar Builder para las consultas con las partes condicionales.
  • Doctrina utiliza claves y limitaciones para llevar a cabo acciones en cascada y mantener datos consistentes extranjeros.
  • UnitOfWork de Doctrina es un muy buen e inteligente cosa, que no tiene analogía en otros ORM PHP

En mi humilde opinión de la doctrina momento ofrece mejor soporte finalización de código IDE y capa de abstracción de base de datos entre todos los ORM PHP disponibles. No es por ingeniería una y sigue los principios sólidos.

Me gustaría añadir un punto a la respuesta de GerKirill. La falta de apoyo a los métodos de captador / definidor de magia es una debilidad, en mi humilde opinión, no una fuerza. Si alguna vez se ha desplazado por idénticas de páginas de getters / setters docenas, se dará cuenta de que estos métodos son un gran desperdicio de espacio (por no hablar de tiempo de compilación). Nadie establece accidentalmente una variable de objeto, y un regulador no le impide hacer eso ... cuando se quiere cambiar la propiedad, que acaba de llamar el colocador (¿cómo funciona un regulador de "proteger" la propiedad - si está va a hacer un error tipográfico y establecer directamente el valor de la propiedad equivocada, que hará que el mismo error tipográfico y llamar a la incubadora mal). Y es muy raro que una incubadora o captador de hacer otra cosa que no sea obtener o establecer una propiedad. Si usted tiene que hacer algo especial para establecer u obtener una propiedad, que la propiedad debe ser un método (véase http://www.yegor256.com/2014/09/16/getters-and-setters-are-evil.html ), o usted debe ser refactorización su código, o si deben llamar a una función de validación de la propiedad (por lo general en el momento de crear el objeto). Este es uno de esos lugares comunes de la ONU-desafió que plagan el mundo OO. Pensar en ello antes de publicar la respuesta estándar-sabiduría recibida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top