Wo stelle ich Klassen in Symfony auf, die weder Controller noch Modelle sind?

8

Für mein Anwendungspaket brauche ich einige Klassen, die weder Controller noch Modelle sind. Zum Beispiel möchte ich eine scorecard -Klasse haben, die Mitglieder wie "skill", "efficiency", "beauty" usw. hat. Außerdem kann es Member-Methoden / Getter wie "meanScore" haben.

Wo würde solch eine Klasse in das Symfony-Framework gehen?

    
Robert Martin 06.09.2011, 22:17
quelle

3 Antworten

8

Ich stimme @Gordon zu, dass sich das wie ein Geschäftsobjekt anhört. Aber wenn Sie sicher sind, dass dies nicht der Fall ist, ist Ihr nächster Schritt, herauszufinden, wie Sie es klassifizieren würden. Ist es ein Helfer? Ein Ereignis-Listener? Eine Nutzungsklasse? Wenn Sie das herausgefunden haben, fragen Sie sich: Ist es für ein Paket spezifisch, oder werden Sie es unter den Projekten wiederverwenden?

Nehmen wir an, Sie entscheiden, dass es sich um einen Ereignis-Listener handelt, und gehört zum Bundle. Setzen Sie es in MyBundle/EventListener . Wenn es ein Helfer ist, lege ihn in MyBundle/Helper . Nun, wenn du vorhast, es wieder zu benutzen (was in diesem Fall nicht so klingt, sondern mit mir ...), solltest du besser einen Platz in vendor dafür erstellen.

Wichtig ist, dass Symfony2 so jung ist, dass es nicht wirklich eine Liste mit Best Practices gibt, die solche Fragen beantworten. Im Moment liegt es an uns zu sehen, was funktioniert und was nicht. Es ist wie der wilde Westen:)

    
Steven Mercatante 06.09.2011, 23:25
quelle
3

Die Art, wie ich solche Fragen beantworte, ist, dass ich zu KnpBundles gehe und überprüfe, wie andere Entwickler das machen.

Eine weitere Sache, die es zu beachten gilt, ist, dass bei Symfony2 die Wahlfreiheit bei der Konfiguration oberste Priorität hat. Sie können alles in Random -Ordner für alle Symfony2-Kernelsorgien kleben, solange Sie es richtig eingerichtet haben. Nun, das ist wahrscheinlich ein bisschen extrem, aber zum Beispiel Listener oder EventListener - kein Unterschied.

Nun, wenn Sie mich fragen würden, würde ich sagen, dass für die Scorecard - je nachdem, wo Sie es verwenden werden, entweder Service oder Helper/Util

Über breadcrumb - scheint ein gutes Beispiel für eine Zweigverlängerung zu sein.

    
Inoryy 07.09.2011 05:02
quelle
2

Da diese Klasse anscheinend ein Geschäftsobjekt aus Ihrer Domäne darstellt, gehört sie zum Modell.

    
Gordon 06.09.2011 22:21
quelle