Opzet Symfony bundles en entities
Ik weet dat ik de laatste tijd veel vragen stel m.b.t. symfony maar ik kan simpelweg weinig 'echte' antwoorden vinden op bepaalde vragen.
Ik ben op dit moment een symfony project aan het maken waar ik twee verschillende bundles in heb. Deze bundles zijn:
School\LeerlingBundle
School\DocentBundle
Nu heb ik in beide bundles Entities aangemaakt waarmee ik ook mijn database schema mee opzet. Maar ik kom er nu echt dat ik vanuit de LeerlingBundle soms een Entity nodig heb die in de DocentBundle staat gedefinieerd (en vice versa). Ik wil niet graag entities tweemaal kopieren.
Nu had ik het idee om een extra bundle aan te maken:
Data\DataBundle
Waarin ik al mijn entities definieer (zodat alle entity modellen losstaan van de rest). Ik kan dan ook mijn Entity repositories hierin stoppen zodat ik ze altijd kan hergebruiken.
In alle voorbeelden die ik doorloop gaat het hier nooit over (in de voorbeelden wordt een entity altijd in dezelfde bundle aangesproken) en na googelen kan ik niet echt tot een definitief antwoord komen.
Is het logisch om het op deze manier te doen of gaat dit op de 1 of andere manier tegen de 'standaard' in en zijn er daarom geen voorbeelden van?
Bedankt!
Maak maar 1 bundles: De AppBundle
Wanneer je bepaalde code in meerdere applicaties/projecten nodig hebt refactor je dit dan uit de AppBundle naar een andere bundle (bijv. de nieuwsbrief functionaliteit naar een NewsLetterBundle). Het is onnodig om het jezelf moeilijk te gaan maken wanneer je deze bundle scheiding helemaal niet nodig blijkt te hebben.
Dit en nog veel meer tips voor beginnende Symfony devs staan beschreven in http://symfony.com/doc/current/best_practice, een aanrader om te lezen.
Vind het toch nog wel lastig.
Als ik het goed begrijp is het dus 'de recommended' manier om het volgende te doen:
1 bundlegebruiken
Src\AppBundle
en hierin vervolgens mijn folders te maken dus dan wordt het:
Src\AppBundle\Entity
Src\AppBundle\Leerling
Src\AppBundle\Docent
Dan zou ik in de mappen Leerling en Docent hun eigen controllers kunnen plaatsen?
Ga in ieder geval de website nog even verder nalezen want er staan wel interessante dingen op waar ik op eerste gezicht niet aan had gedacht (heb alleen wat tutorials gevolgd, dus ging er wel vanuit dat je dan genoeg weet :))
Bedankt to zover in ieder geval.
Copy/Paste:
Quote:
Application Bundles¶
When Symfony 2.0 was released, most developers naturally adopted the symfony 1.x way of dividing applications into logical modules. That's why many Symfony apps use bundles to divide their code into logical features: UserBundle, ProductBundle, InvoiceBundle, etc.
But a bundle is meant to be something that can be reused as a stand-alone piece of software. If UserBundle cannot be used "as is" in other Symfony apps, then it shouldn't be its own bundle. Moreover InvoiceBundle depends on ProductBundle, then there's no advantage to having two separate bundles.
Best Practice
Create only one bundle called AppBundle for your application logic
Implementing a single AppBundle bundle in your projects will make your code more concise and easier to understand. Starting in Symfony 2.6, the official Symfony documentation uses the AppBundle name.
There is no need to prefix the AppBundle with your own vendor (e.g. AcmeAppBundle), because this application bundle is never going to be shared.
When Symfony 2.0 was released, most developers naturally adopted the symfony 1.x way of dividing applications into logical modules. That's why many Symfony apps use bundles to divide their code into logical features: UserBundle, ProductBundle, InvoiceBundle, etc.
But a bundle is meant to be something that can be reused as a stand-alone piece of software. If UserBundle cannot be used "as is" in other Symfony apps, then it shouldn't be its own bundle. Moreover InvoiceBundle depends on ProductBundle, then there's no advantage to having two separate bundles.
Best Practice
Create only one bundle called AppBundle for your application logic
Implementing a single AppBundle bundle in your projects will make your code more concise and easier to understand. Starting in Symfony 2.6, the official Symfony documentation uses the AppBundle name.
There is no need to prefix the AppBundle with your own vendor (e.g. AcmeAppBundle), because this application bundle is never going to be shared.
bron: http://symfony.com/doc/current/best_practices/creating-the-project.html#application-bundles
Ik ga nu dan ook werken in 1 bundle (de appbundle) en alleen een nieuwe bundle aanmaken als dit op zichzelf kan functioneren.
thx!