Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Inyectar multiples servicios

21 de junio de 2016

Hola, tengo un manager al que le inyecto ya 4 servicios como doctrine, uno de validación propio y otro de paginación propio tambien y un manager de una entidad ya que necesito hacer un get de esa entidad.

La pregunta es que ya son 4 y necesito meter otro más y no se si esto se considera mucho o no y si es más recomendable inyectar el container solo y obtener los demás de el.

Otra de mis preguntas es sobre los manager, tengo uno que gestiona operaciones de una entidad, esa entidad está relacionada con otra entidad de la que debo tener acceso a una función llamada getCountry, esta función esta en dicho manager para poder reutilizarla, básicamente hace una llamada al repositorio y si no existe manda un throw personalizado de que no existe. En estos casos ¿inyecto el otro manager? o ¿repito la función en mi manager?...

Gracias por vuestro tiempo!!


Respuestas

#1

Tus preguntas son muy interesantes pero creo que no tienen respuesta. Mejor dicho, no tienen respuestas que sean "verdades absolutas" sino más bien opiniones.

Mi límite personal para inyectar servicios son 5. Si un servicio requiere que inyecte 6 servicios, inyecto en su lugar el contenedor de servicios entero y después veo cómo puedo simplificarlo para requerir menos servicios.

Y respecto a la otra pregunta, yo inyectaría el otro manager en vez de copiar+pegar el código de la funci´n que necesitas.

@javiereguiluz

21 junio 2016, 18:03
#2

Gracias por responder, en esa discusión estábamos, en el inspector de código está la recomendación de que a un constructor es mejor no pasar más de 3 parámetros y entonces me entraba la duda, y comentándolo con mis compañeros no sabíamos si quedaba mal visto el inyectar el contenedor de servicios.

Sobre el manager, haré eso ya que al no pasar nada por inyectar el contenedor de servicios no pasa nada que tenga que mandar más.

Un saludo

@AlbertoVioque

22 junio 2016, 8:08