He estado usando el concepto de DI desde hace un tiempo, pero ahora estoy empezando a utilizar un contenedor de inyección de dependencia (DIC). Aunque una cosa no está clara para mí.Cómo mantener una instancia de un Contenedor de inyección de dependencia (PHP)
En mi DIC guardo (por ejemplo) un objeto Config y un objeto Request. Entiendo que estos objetos en un ámbito de solicitud (la misma instancia se usa cada vez que lo solicita desde este contenedor) siguen siendo los mismos. Pero esto solo sucede cuando reutilizo la misma instancia del DIC.
¿Cómo debo pasar el DIC en mis clases? Digamos que quiero usarlo en mi clase de enrutador, ¿necesito pasarlo en el constructor de mi clase de enrutador? Pero la clase Router se crea en otra clase, y esa también debería tener este objeto DIC.
¿O debería crear una singleton de este DIC?
La mejor manera es crear el DIC en la rutina de arranque de mi aplicación y pasarla donde sea necesario? Parece un buen enfoque, pero de hecho necesito poner un esfuerzo extra en eso. (Mis clases también serán muy comprobables) – jayv
Para un contenedor que se utiliza en toda la aplicación, podría ser una buena idea. Encapsula efectivamente recursos/objetos, que de otro modo tendrían que estar expuestos como variables globales o Singletons. Recuerde que también puede tener contenedores DI 'locales', con un alcance de uso limitado. Esos deben ser creados dentro del alcance en el que se requieren. – Mchl
¿Puede darme un breve ejemplo práctico del uso limitado del alcance? – jayv