2012-07-16 17 views
5

Una aplicación Symfony2 generalmente tiene una colección de entidades. Una Doctrina EntityManager se usa comúnmente para captar y conservar estas entidades.Symfony fetch/persist convenciones de nomenclatura de servicio orientado a entidades y mejores prácticas

Las entidades se utilizan en varios lugares a lo largo de la aplicación; para muchas entidades, y por entidad, tiene sentido concluir el manejo de una entidad determinada más la captación/persistencia en un servicio.

Por ejemplo, para una entidad User puede haber un UserService con fetchUser($user_id) y persistUser(User $user) métodos (o tal vez sólo fetch() y persist() métodos, esto es sólo un ejemplo).

Una aplicación puede terminar con muchos servicios orientados a entidades para la captación y persistencia de entidades. Dichos servicios serán similares en sus interfaces, difiriendo en el tipo de entidad manejada.

Que una aplicación puede contener muchos servicios orientados a entidades parece ser una situación común. Se sigue que la cuestión de nombrar y diseñar dichos servicios es un problema común.

para una nueva aplicación para requerir la creación de, por ejemplo, una base de EntityService e infantiles UserService, WidgetService y ProductService clases siente repetitivo, como en los medios para tratar a esos aspectos que debería ser un problema resuelto.

  • ¿Existen mejores prácticas para la introducción de servicios relacionados, tales entidad de gestión en una aplicación Symfony?

    Parece que debería ser un problema resuelto, quizás con un patrón de diseño bien picado.

  • ¿Existen convenciones de nombres que sería aconsejable seguir?

    He observado, en diferentes aplicaciones, tanto `UserManager` como` UserService` elegidos como nombres de servicios. ¿Existen convenciones vigentes?

+0

Como tengo una pregunta similar, y dado que para encontrar una respuesta me "mio" a mí mismo algunos paquetes bien conocidos, les digo que la convención de nombres "Manager" PARECE SER preferible a la convención de nombres de "Servicio". – DonCallisto

Respuesta

1

En cuanto a la denominación, no hay convenciones, que yo sepa para este tipo de situaciones, pero no es la clase Doctrine\ORM\EntityManager entidad que administra, así que usarían Manager en lugar de Service.

Ahora, hablando de los servicios de gestión de entidades: ¿realmente necesita tantos servicios? Si el método UserService::persistUser() no hace más que simplemente persistir al usuario, ¿por qué está utilizando un servicio personalizado y no el predeterminado EntityManager?

Además, no debe poner los métodos de depósito y persistentes todos juntos en la misma clase. ¿No es más fácil usar un repositorio personalizado para la entidad?

Cuestiones relacionadas