2011-09-06 15 views

risposta

8

Sono d'accordo con @Gordon che questo suona come un oggetto aziendale. Ma se sei sicuro che non lo sia, il tuo prossimo passo è capire come lo classificheresti. È un aiuto? Un ascoltatore di eventi? Una classe di utilità? Una volta capito, chiediti: è specifico per un pacchetto o lo riutilizzerai tra i progetti?

Diciamo che si decide che è un listener di eventi e appartiene al pacchetto. Mettilo nel MyBundle/EventListener. Se si tratta di un aiuto, inserirlo in MyBundle/Helper. Ora se hai intenzione di riutilizzarlo tra i progetti (che in questo caso in realtà non sembra, ma abbi pazienza con me ...) potresti trovarti meglio a creare un posto in vendor per questo.

La cosa importante da ricordare è che poiché Symfony2 è così giovane, non esiste un elenco definitivo di best practice che risponda a domande come queste. In questo momento è gentile da parte nostra vedere cosa funziona e cosa no. È come il selvaggio west :)

2

Poiché questa classe rappresenta apparentemente un oggetto aziendale dal dominio, appartiene al modello.

+0

E nel caso in cui non si tratti di un oggetto aziendale. Dite che ho la classe "breadcrumb", con due membri "nome" e "href"? –

+0

@Robert Non so dove l'avrebbero messo Symfony e Twig. Lo inserirò comunque nel modello, anche se non all'interno del livello Dominio, ma nel livello generale dell'applicazione perché fa parte dell'interfaccia utente. Oppure, se è riutilizzabile, lo inserisco in una sorta di cartella framework/lib – Gordon

3

Il modo in cui rispondo a questi tipi di domande per me è andare a KnpBundles e verificare come altri sviluppatori lo stanno facendo.

Un'altra cosa da notare è che Symfony2 è tutto basato sulla libertà di scelta quando si tratta di configurazione. È possibile inserire tutto nella cartella Random per tutte le preoccupazioni del kernel Symfony2, a condizione che venga impostato correttamente. Beh, probabilmente lo stai portando un po 'all'estremo, ma per esempio Listener o EventListener - nessuna differenza.

Ora, se mi avresti chiesto, direi che per la Scorecard - a seconda di dove si sta andando ad usarlo, sia Service o Helper/Util

Chi l'breadcrumb - sembra un buon esempio per un'estensione di ramoscello.

+0

Non penso che sia un servizio. I servizi di solito eseguono calcoli richiamando l'API pubblica degli oggetti Dominio. Raramente incapsulano il loro stato ("abilità", "efficienza", "bellezza"). Sono più simili a un sottile strato mediatore tra un livello esterno come l'interfaccia utente e il livello Dominio. – Gordon

Problemi correlati