2012-08-13 4 views
7

Oke also ich bin im Begriff, eine Website mit Symfony 2 zu machen.Für was würde ich ein Bündel machen? (Symfony 2)

Soll ich nur ein "Main" -Bündel machen, das alle anderen Bündel steuert/zusammensetzt? Mit anderen Bundles denke ich an ein "Galerie" -Bündel, das Dinge im Zusammenhang mit Fotos steuert, und ein "Laden" -Bündel, das einen Shop-Teil steuert.

Was wäre das beste (oder zumindest gute) Training und wie würden professionelle Teams es tun?

Antwort

3

Laut Symfony Dokumentation sollte ein Bündel konsistente und geschlossene Struktur sein. Wenn also zum Beispiel "store" und "gallery" in irgendeiner Weise verwandt sind (z. B. dasselbe Modell verwenden), sollten sie in einem Bündel sein (AppBundle, CoreBundle, PlatformBundle - was immer Sie wollen). Wenn die Galerie jedoch ein völlig eigenständiges Stück Code ist und leicht mit einem anderen Projekt verbunden werden kann, sollten Sie es in ein separates Paket ausschließen.

Ich denke, eine gute Idee ist, schauen Sie sich einige Projekte auf GitHub und schauen, wie andere damit umgehen.

+0

Ich weiß eigentlich nicht, wie Github funktioniert oder wie man ein Projekt findet, das dem entspricht, was ich in einer angemessenen Zeit tun möchte. Aber was Sie sagen ist: make 1 Bundle (appBundle oder coreBundle), die die grundlegende Website haben und dann für spezielle Teile, die für andere Projekte (Galerie und Geschäft) verwendet werden könnten, ein eigenes Bündel haben? –

+0

Ja - genau. Dieser Ansatz hat mehrere Vorteile. ZB 1) Es ist etwas effizienter 2) Sie können sehen, was Sie an anderer Stelle auf den ersten Blick verwenden können. 3) IMO ist es leichter, Ihre Tests auf diese Weise zu verwalten 4) Ihre App ist "tragbarer". Abgesehen von unabhängigen Teilen Ihrer App können Sie separate Pakete für Utilities erstellen (wie zum Beispiel einige Math-Klassen oder -Klassen definieren HTTP-Status usw.) oder Teile, die sich logisch von Anwendungen unterscheiden (z. B. AdminBundle). Und nach vielen Erkundungen habe ich entdeckt, dass dies die bequemste und beliebteste Lösung ist. – Cyprian

2

Sehen Sie die folgenden Fragen und meine Antworten zu ihnen:

Grundsätzlich in meiner letzten Projekte, die ich bin nicht Bundles für app spezifische Code; Die einzige Ausnahme ist für Dinge, die in einem Bündel fest codiert sind - wie Doctrine Fixtures -, die ich in AppBundle eingegeben habe. Alles andere - Modelle, Controller, Dienste, Formulartypen usw. - gibt es in keinem Paket.

+0

Danke für deine Antwort, ich bin neu bei symfony2 im Moment, daher ist es vielleicht keine schlaue Sache, jetzt auf das Basis-Setup zu wechseln. Aber ich werde mir diesen Ansatz ansehen. –

+0

Hey Elnur, ich habe einige deiner anderen Threads gelesen und ich verstehe nicht, wie du Dinge wie Controller, Formulare usw. außerhalb eines Bündels platzierst. Wie funktioniert das genau? Welchen Zweck haben Bündel dann eigentlich für dich? –

+0

Ich plane, meine Antwort auf die erste Frage aus der Liste, die ich hier gegeben habe, mit Beispielen zur Definition von Controllern, Formularen usw. außerhalb von Bündeln zu erweitern. Ich brauche nur etwas Zeit. –

1

Wie @ Cyprian sagte ein Bündel ist eine Reihe von Funktionen, die allein arbeiten können. Während der Entwicklung wissen wir nicht immer, wann die Dinge getrennt sind. Es kommt mit der Zeit.

Persönlich arbeite ich seit Februar mit Symfony2 und ich hörte nie auf, das Handbuch und verwandte Bücher zu lesen, um tiefer zu verstehen. Das hat sehr geholfen und ist sehr interessant zu lesen, ich versichere Ihnen :)

Hier ist meine top favourites documentation pages, en enlightening blog posts on delicious.

Für Ihre sofortige Frage, vergessen Sie "Frontend" und "Backend" wie wir es in Symfony 1.x getan haben. Denken Sie an Modell-Entitäten (wie in EINER EINZEL-Reihe) und bauen Sie ein Bündel auf. Wenn Ihr Code wächst, werden Sie sehen, wie Sie sie in Paketen zerlegen und trennen. Sie müssen nur daran denken, Ihre Funktionen in kleinen Methoden zu trennen und umzugestalten.