2012-07-16 10 views
5

Un'applicazione Symfony2 dispone in genere di una raccolta di entità. Una Doctrine EntityManager è comunemente usata per recuperare e persistere queste entità.Symfony fetch/persistenti convenzioni di denominazione dei servizi orientate all'entità e best practice

Le entità vengono utilizzate in più punti all'interno dell'applicazione; per molte entità e per entità, ha senso racchiudere la gestione di una determinata entità più il recupero/permanenza in un servizio.

Ad esempio, per un'entità User ci può essere una UserService con fetchUser($user_id) e persistUser(User $user) metodi (o forse solo fetch() e persist() metodi, questo è solo un esempio).

Un'applicazione può finire con molti servizi orientati all'entità per il recupero e la persistenza di entità. Tali servizi saranno simili nelle loro interfacce, differendo nel tipo di entità gestita.

Che un'applicazione possa contenere molti servizi orientati all'entità sembra una situazione comune. Ne consegue che la questione di nominare e architettare tali servizi è un problema comune.

Per una nuova applicazione per richiedere la creazione di, per esempio, una base EntityService e bambino UserService, WidgetService e ProductService classi sente ripetitivo, come nei mezzi per trattare questi aspetti dovrebbe essere un problema risolto.

  • Vi sono le migliori pratiche per l'introduzione di servizi connessi come entità di gestione in un'applicazione Symfony?

    Sembra che dovrebbe essere un problema risolto, con forse un modello di progettazione ben assestato da seguire.

  • Esistono convenzioni di denominazione che sarebbe consigliabile seguire?

    Ho osservato, in diverse applicazioni, sia `UserManager` che` UserService` scelti come nomi di servizio. Ci sono convenzioni prevalenti?

+0

Dal momento che ho una domanda simile, e dal momento che per trovare una risposta io "metto" me stesso alcuni pacchetti noti, vi dico che la convenzione di denominazione "Manager" SEMBRA ESSERE preferita alla convenzione di denominazione "Servizio". – DonCallisto

risposta

1

Per quanto riguarda la denominazione, non ci sono convenzioni che io sappia per tali situazioni, ma non v'è la classe che gestisce Doctrine\ORM\EntityManager entità, quindi vorrei usare Manager invece di Service.

Ora, parlando di servizi di gestione delle entità: hai davvero bisogno di così tanti servizi? Se il metodo UserService::persistUser() non fa altro che persistere l'utente, perché stai utilizzando un servizio personalizzato e non il valore predefinito EntityManager?

Inoltre, non si devono mettere insieme il repository ei metodi persistenti nella stessa classe. Non è più semplice utilizzare un repository personalizzato per l'entità?