2011-12-07 11 views
8

Ho la domanda esatta che questo ragazzo ha: http://groups.google.com/group/symfony2/browse_thread/thread/cd35132cc6972f29Come organizzi i tuoi bundle nei progetti Symfony2?

mi limiterò a copiare e incollare qui:

Mi chiedevo che cosa stanno usando diversi modi di organizzare nel giro di fasci persone progetto.

Mi sembra di finire con un enorme pacchetto per un progetto o molto di pacchetti strettamente correlati (dipendenti) l'uno all'altro. per esempio;

Ho implementato la propria entità utente e moduli di accesso ecc., Ma gli utenti sono collegati a un'organizzazione (con alcune funzionalità). Etc ... È per lo più le entità che si sovrappongono molto immagino ...

Ragazzi, li avete divisi o buttati tutti nello stesso pacchetto?

+1

Questo sembra che potrebbe portare ad essere una "domanda di discussione". Inoltre, molte risposte sono ugualmente valide qui senza un esempio concreto del problema. Diverse combinazioni di entità potrebbero cambiare la risposta ad esempio: 'Utente' e' Organizzazione '(presupponendo che ci siano altre dipendenze dall'organizzazione all'interno del sistema) - Diversi pacchetti. 'BlogPost' e' BlogPostRevision' - Lo stesso pacchetto. In parte è l'intuizione basata sul design del sistema: un pacchetto dovrebbe incapsulare solo alcune funzionalità che consideri coese. – Kasheen

risposta

6

Per ogni progetto, avvio con un CoreBundle, dove metto tutto insieme. Poi ho appena sviluppato delle funzionalità e, con il passare del tempo, lo rivaluterò - se potessi usare questa funzione da qualche altra parte un giorno (o persino rilasciarlo all'open source), lo sposterei in un nuovo pacchetto.

"Formato" della caratteristica degna di fascio separato non importa - che ho visto bundle OS grandi come un unico file js 1: D

una cosa di sicuro - ripieno tutto in un unico bundle è cattivo, va contro il motivo per cui questa architettura è stata implementata in primo luogo!

+0

Anche io sto iniziando ad usare CoreBundle, a meno che il progetto non sia grande non abbiamo bisogno di creare così tanti pacchetti ... :) +1 – ianaz

0

La mia risposta nel seguente argomento probabilmente può aiutare: Symfony 2 : Location of Entities

Io non sono un maestro Symfony2, ma credo di avere una buona idea piuttosto del progetto fascio; ovviamente, non esiste una risposta universale, ma puoi seguire alcune "buone pratiche".

Prima di tutto, non penso che i grandi bundle siano una buona soluzione; non dividi più il tuo progetto in applicazioni, come hai fatto con Symfony1.4. Potresti chiedere "ma cosa posso fare con la logica frontend/backend?" ; abbastanza facile, usa il controller!

Ogni fascio deve fare riferimento a un modulo, una pietra nel muro del progetto. Devi dividere la tua domanda; molti pacchi non sono male. Naturalmente, non fare un pacchetto per ciascuna entità, sarebbe una perdita di tempo. Ma immagina un'applicazione per blog: dovresti disporre di un pacchetto Utente, pacchetto di articoli (che gestirà post, categorie, ...), eventualmente un pacchetto per pagine statiche, ...

Non è logico che il tuo pacchetto sia collegato ; stai costruendo un'intera applicazione, quindi in questo caso sono collegati. Ma la parola chiave qui è "generalizzazione"; il tuo gruppo dovrebbe essere in grado di essere collegato ad altri pacchetti, non solo ai tuoi. Dovresti essere in grado di riutilizzarlo in altri progetti.

Buona fortuna!

15

Modifica: I don't use bundles for app-specific code anymore.


Personalmente preferisco avere un pacchetto per una sezione di un'applicazione.Per esempio:

  • UserBundle
  • BlogBundle
  • ForumBundle
  • JobBundle
  • StoreBundle
  • ecc

Questo è bene se l'applicazione è un miscuglio di varie funzionalità, nessuno di cui è abbastanza grande da richiedere un'applicazione separata e/o un sottodominio . Ma se stavo sviluppando un grande applicaton webstore, i miei pacchi sarebbero più specifico:

  • UserBundle
  • ProductBundle
  • CartBundle
  • SearchBundle
  • WishlistBundle
  • ecc

Quindi, direi, dipende dall'obiettivo del progetto. Quello che è solo una sezione per un progetto potrebbe essere la funzionalità principale di un altro.

E di solito ho CommonBundle, dove tutta la roba comune va, come CSS globale, immagini, layout, ecc

Inoltre ci sono almeno due opzioni per l'organizzazione di back-end:

  1. ogni bundle ha una propria sezione di backend, oppure
  2. c'è un unico grande pacchetto di backend.

Personalmente propendere per la prima opzione e si può leggere su di esso nel mio previous answer, ma ci sono persone che preferiscono avere un pacchetto separato per l'intero back-end - probabilmente utilizzando uno dei admin bundles.

A proposito, è perfettamente accettabile che i bundle siano interconnessi - non è necessario renderli tutti indipendenti l'uno dall'altro. Ad esempio, JMSDiExtraBundle dipende dalla libreria metadata e da JMSAopBundle, che a sua volta dipende da cg-library. Se proverai a mantenere i pacchetti totalmente indipendenti, ti ritroverai con grossi blocchi monolitici di codice a un fascio.

+0

grazie mille per questa spiegazione! –

Problemi correlati