2011-10-31 6 views
9

Soy nuevo en la versión 2 del framework Symfony. Hice algunos proyectos con v1 pero ahora estoy tratando de entender la nueva versión y sus características. Leí el concepto de Bundles pero su propósito aún no está muy claro para mí.Una descripción exacta de un paquete de Symfony en una aplicación web compleja

Digamos que tiene una gran aplicación web, un CRM, por ejemplo. ¿Cómo se verían los paquetes? Sería NewsletterBundle (para el envío de boletines informativos), ContactManagementBundle (para la administración de contactos), UserBundle (para editar usuarios y sus permisos).

¿O sería menos trillado, EmailBundle (para manejar todo el tráfico de correo electrónico), CRMBundle (para poner todo su código CRM), PermissionsBundle, ApiBundle.

Respuesta

21

Me gusta pensarlo así: un paquete debe representar una característica específica o un conjunto de características similares para un proyecto.

Su primer ejemplo es un mejor uso de los paquetes que su segundo ejemplo, porque el propósito de cada paquete es más definido. Si bien es posible usar un CRMBundle para todo, no aprovecharías la capacidad de Symfony para organizar tu código. Además, si desea exportar el código de su boletín informativo a un nuevo proyecto, pero no a todos del código CRM, le resultará más fácil copiar en un paquete de boletín informativo que copiar sobre el paquete CRMBundle, y luego eliminarlo.

Al pensar en un proyecto Symfony2, a veces uno quiere olvidar todo lo que sabe acerca de Symfony 1.x, ya que adoptan enfoques muy diferentes para resolver muchos problemas. Por ejemplo, en Symfony 1 era común crear una aplicación 'frontend' y 'back-end' para un proyecto, y cada aplicación obviamente contendría lógica específica para esas partes del proyecto. Por lo tanto, es posible que tenga un controlador de boletín en las aplicaciones frontend y back-end. En Symfony2, es mejor usar solo un paquete de Newsletter, pero con dos controladores (tal vez llamados 'frontend' y 'back-end'). De nuevo, un beneficio inmediato para esto es cómo se vuelve reutilizable su código.

+0

Muchas gracias, eso deja las cosas más claras. – tomvo

+2

"La capacidad de Symfony para organizar tu código"? Lo siento, pero lo que hace Symfony es solo forzarte a crear paquetes y, por lo tanto, estar vinculado al descubrimiento automático basado en convenciones (que tal vez traduzcas a "organización de código"). – Florian

+1

Aprendí algo con Symfony, es que organizar cosas en paquetes es (generalmente) una mala idea, como desarrollador de aplicaciones. Terminas atado a un marco. En su lugar, organice su código como si no hubiera un marco. Symfony2 es MUY bueno en esto, es tan flexible que puedes hacerlo. – Florian

Cuestiones relacionadas