Opzet Symfony bundles en entities

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ama saril

ama saril

03/03/2015 10:22:30
Quote Anchor link
Hallo php'ers,
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!
 
PHP hulp

PHP hulp

06/12/2024 23:43:32
 
Wouter J

Wouter J

03/03/2015 10:41:28
Quote Anchor link
Stop met bundles is de grootste tip die ik je kan geven (en dit is tegenwoordig ook een Symfony Best Practice).

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.
 
Ama saril

ama saril

03/03/2015 11:09:30
Quote Anchor link
Ah er staat daar inderdaad aardig wat beschreven (http://symfony.com/doc/current/best_practices/business-logic.html)

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.
 
Wouter J

Wouter J

03/03/2015 11:35:27
Quote Anchor link
Nee, gewoon de normale directory structure volgen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
\- src/
    \- AppBundle/
        +- Controller/
        |   +- StudentController.php
        |   +- TeacherController.php
        \- Entity/
            +- Student.php
            \- Teacher.php
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/03/2015 14:52:58
Quote Anchor link
Jap... ben het met Wouter eens. Ik deed eerst ook een AdminBundle, MainBundle en nog eens een TeamBundle. Wordt je helemaal gek van en het wordt nooit kloppend omdat er altijd overlappingen zijn. Daarnaast moet je jezelf telkens afvragen of je de entity nu in bundle A of bundle B had aangemaakt. Volgens de Docs maak je alleen een nieuwe Bundle aan als deze helemaal op zichzelf kan functioneren.

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.


bron: http://symfony.com/doc/current/best_practices/creating-the-project.html#application-bundles
 
Ama saril

ama saril

03/03/2015 15:35:04
Quote Anchor link
Ok dank je wel allemaal dat maakt een hoop duidelijk.
Ik ga nu dan ook werken in 1 bundle (de appbundle) en alleen een nieuwe bundle aanmaken als dit op zichzelf kan functioneren.

thx!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.