Estoy comenzando con un proyecto Symfony2. Conozco los conceptos básicos del framework, pero tengo una pregunta: ¿Dónde está el lugar correcto para crear esas clases de ayuda que creo para ayuda o para la lógica de negocios?Symfony2 donde colocar clases personalizadas de ayuda
Respuesta
La respuesta de Max es correcta. Sin embargo, cuestiono el camino que recomienda para su código.
Las siguientes clases y archivos tienen emplazamientos específicos:
Extensiones de servicio de contenedores (pertenecen a) DependencyInjection/
de http://symfony.com/doc/current/cookbook/bundles/best_practices.html
que dice que sus servicios deben ser colocados en una carpeta llamado 'DependencyInjection', no 'Servicios'. En su totalidad, debe ser src/Foo/BarBundle/DependencyInjection
lo digo como alguien que tenía la anterior y acaba de terminar todos ellos moviéndose a este último (!)
Está equivocado, debe almacenar extensiones DI en DependencyInjection, no los servicios en sí. http://symfony.com/doc/current/best_practices/business-logic.html – PachinSV
Estoy de acuerdo con @PachinSV. Esta página lo menciona explícitamente: http://symfony.com/doc/current/cookbook/bundles/extension.html –
Puede crear las clases personalizadas en su paquete, como en una carpeta Helper/.. Sin embargo, para usar esos ayudantes en su código, deberá definir esos auxiliares en su archivo de descripción del servicio (como services.xml) ... Entonces puede usar $ container-> get ('your_helper') ->
La mejor manera de mantener la lógica de negocios es crear un servicio para manejar toda la lógica. Por lo que será en:
src/Foo/BarBundle/Service
y hay que llamar al servicio en el services.yml
.
Hace poco hice un pequeño trabajo sobre un proyecto Symfony2 existente. Según lo descrito por respuesta de Tuong Le, creé mis Clases de ayuda en el directorio Helper
del nombre del paquete y la clase con ayudante sufijo es decir, la clase de ayuda se encuentra en:
src/MyBundle/Helper/MyUtilHelper.php
puedo usar MyUtilHelper
clase en mi paquete sin llamar el contenedor de servicio, es decir, no tuve que llamar.
$container->get('my_util');
Realmente no sé si hay alguna configuración especial. en mi configuración; alguien ya lo configuró y estaba agregando nuevas funcionalidades.
Qué @ Adam dice que es malo, tiene que almacenar su inyección de dependencias Extensiones en el directorio DependecyInjection, no el propio servicios. En la documentación, dice que puede almacenar sus clases de lógica de negocios (personalizadas) en el lugar que desee.
http://symfony.com/doc/current/best_practices/business-logic.html
De acuerdo con la documentación oficial - en particular - Symfony Buenas Prácticas - usted debe almacenar sus servicios en Utilidades carpeta bajo la src. Creo que esta es la forma correcta, independientemente de si desea o no hacer que la funcionalidad proporcionada por los servicios de su paquete esté disponible para otras partes de la aplicación a través de Service Container.Además, puede almacenar clases de ayuda en cualquier lugar que considere adecuado. En cuanto a las respuestas de @Adam Knowles y @PachinSV, no son del todo acertadas porque no responden a su pregunta: "¿Dónde está el lugar adecuado para crear esas clases de ayuda que creo para ayudar o para la lógica de negocios?" o "Dónde almacenar las clases que deseo registrar y usar a través del Contenedor de servicios" - pero no dónde poner Paquete clase de extensión - cuyo propósito principal es proporcionar información sobre la configuración que debe ser cargado automáticamente desde su paquete a las aplicaciones Service Container durante el proceso de arrancando el Kernel.
- 1. Cómo indicar el marco zend donde están mis clases personalizadas
- 2. Plantillas de colección personalizadas en symfony2
- 3. Symfony2 forma etiquetas personalizadas de elementos repetidos
- 4. Ejemplo simple de anotaciones personalizadas usando Symfony2
- 5. Anotaciones personalizadas de Symfony2 para los objetos
- 6. Clases personalizadas en CodeIgniter
- 7. la salmuera de clases personalizadas
- 8. Dónde colocar recursos básicos en Symfony2?
- 9. Rails 3: ¿Dónde está el mejor lugar para colocar clases personalizadas de validador?
- 10. Pase opciones personalizadas a un formulario symfony2
- 11. donde t: múltiples clases
- 12. ¿Dónde colocar clases personalizadas para que estén disponibles globalmente para la aplicación Rails?
- 13. Cargando clases personalizadas en CodeIgniter?
- 14. ¿Las clases personalizadas de ayuda HTML violan el modelo ASP.NET MVC?
- 15. Rails3 visitas de Arel a clases personalizadas
- 16. Depurando C# Clases de instalador personalizadas
- 17. Rieles: uso de clases personalizadas en Rails
- 18. Incluir funciones personalizadas de usuario Mejores prácticas en Symfony2
- 19. Crear clases dinámicas personalizadas en Objective-C
- 20. ¿Cómo debo almacenar mis clases personalizadas?
- 21. ¿Cómo obtener intellisense para clases personalizadas?
- 22. Cómo almacenar clases personalizadas usando CoreData
- 23. prácticas recomendadas de rieles donde colocar javascript discreto
- 24. Creando instancias de clases de C# personalizadas de IronPython
- 25. BsonValue y clases personalizadas en MongoDB C# Driver
- 26. argumentos de la consola symfony2
- 27. ¿Almacena sus clases de ayuda en un ensamblaje por separado?
- 28. Uso de Rails Form Helpers con clases personalizadas serializadas
- 29. ¿Cómo puedo ordenar una matriz de clases personalizadas?
- 30. Asignación de clases enum personalizadas con Fluent Nhibernate
sabes por el bien de completarlo ... sería agradable para el resto de la comunidad si realmente otorgas una respuesta correcta a una de las siguientes respuestas, y luego explica cómo has implementado la solución y si funcionó bien para ti al final. SO es todo acerca de dar y recibir, no solo tomar – abbood