2011-09-06 9 views

Respuesta

8

Estoy de acuerdo con @Gordon en que esto suena como un objeto comercial. Pero si estás seguro de que no es así, tu siguiente paso es descubrir cómo lo clasificarías. ¿Es un ayudante? ¿Un oyente de eventos? Una clase de utilidad? Una vez que lo resuelva, pregúntese: ¿es específico para un paquete, o lo va a reutilizar entre proyectos?

Digamos que usted decide que es un oyente de eventos y pertenece al paquete. Ponlo en MyBundle/EventListener. Si es un ayudante, póngalo en MyBundle/Helper. Ahora, si planeas reutilizarlo en proyectos (que en este caso realmente no suena como eso, pero ten paciencia conmigo ...) sería mejor que crearas un lugar en vendor.

Lo importante a recordar es que debido a que Symfony2 es tan joven, no hay realmente una lista definitiva de las mejores prácticas que respondan a preguntas como estas. En este momento depende de nosotros ver qué funciona y qué no. Es como el salvaje oeste :)

2

Dado que esta clase aparentemente representa un objeto comercial de su dominio, pertenece al modelo.

+0

¿Qué sucede si no es un objeto comercial? Digamos que tengo la clase 'breadcrumb', con dos miembros 'name' y 'href'? –

+0

@Robert No sé dónde colocarían eso Symfony y Twig. Todavía lo pondría en el modelo, aunque no dentro de la capa de Dominio, sino en la capa de aplicación general porque es parte de la IU. O, si es reutilizable, lo pondría en una especie de carpeta framework/lib – Gordon

3

La forma en que respondo este tipo de preguntas es yendo al KnpBundles y ver cómo lo están haciendo otros desarrolladores.

Otra cosa a tener en cuenta es que Symfony2 tiene que ver con la libertad de elección cuando se trata de configuración. Puede pegar todo en la carpeta Random para todos los cuidados del kernel de Symfony2, siempre que lo configure correctamente. Bueno, eso es probablemente llevarlo un poco al extremo, pero por ejemplo Listener o EventListener - no hay diferencia.

Ahora, si me preguntan, yo diría que para la Scorecard - dependiendo de dónde va a utilizarlo, ya sea Service o Helper/Util

Sobre el breadcrumb - parece como un buen ejemplo para una extensión de rama.

+0

No creo que sea un Servicio. Los servicios generalmente hacen cálculos llamando a la API pública de objetos de Dominio. Raramente encapsulan su propio estado ("habilidad", "eficiencia", "belleza"). Son más como una delgada capa de mediador entre una capa externa como la interfaz de usuario y la capa de dominio. – Gordon

Cuestiones relacionadas