Hola,
Esta es mi primera publicación en este grupo. Aprovecho para presentarme: Soy Backend Deveoper desde hace unos 14 años. Me encanta mi profesión y como todos he ido evolucionando y adaptándome a las nuevas formas de programar. Ahora me encuentro a las puertas del DDD. Me han dado formación y leído unas cuantos artículos sobre el tema, con lo cual empiezo a conocer bastante bien la teoría. Pero llegamos a la práctica... bufff ¿Por dónde empezar?
Y llegamos al punto en el que me encuentro ahora. Antes de empezar grandes proyectos he decidido ir aplicando algunos de los conceptos que he ido aprendiendo en desarrollos sencillos, aunque aun esté a años luz del DDD. Y ahora mismo se me ha presentado una oportunidad: Resulta que la empresa en la que trabajo actualmente se dedican a desarrollar ecommerce con Magento... Magento 1, un framework más antiguo que Matusalén, y me han pedido hacer un importador de productos. ¡Perfecto! Lo voy a desacoplar de Magento. Y empecé a aplicar inyección de dependencias con sus interfaces, etc... desarrollando al final, un pequeño módulo de inserción de productos en Magento e inyectándolo al importador.
Y empiezo con la duda que quería exponer:
Desde el controlador de Magento (en el que el cliente deberá ejecutar la importación), instancio al importador (Importer), al cual le tengo que inyectar el gestor de la fuente de datos (ImporterSourceManager), el repositorio de las categorías (CategoryRepository) y el repositorio de los productos (ProductRepository). Con lo cual lleno la instancia del Importador de "new's" (new ImporterSourceManager, new CategoryRepository, ...). No se si es lo correcto o no. Tengo entendido que no, según me explicó un buen profesor que tuve en la última empresa, los "new" están bastante prohibidos, salvo algunas excepciones como por ejemplo al instanciar una clase que se encuentre en el mismo namespace. ¿Esto es así? ¿Debería usar factories? Si uso factories, lo hago con el método __invoke o con uno estático llamado create o algo así?
Muchas gracias de antemano.