Estoy trabajando en un proyecto de tipo de red social en OO PHP y no quiero usar un marco existente. El objetivo principal de este proyecto es ayudarme a aprender sobre más cosas.¿Son demasiadas dependencias para inyectar en un objeto a través del constructor?
Esta pregunta es más acerca de la inyección de dependencia.
Digamos que tengo estas clases:
clase principal - algunos métodos básicos para hacer cosas en la aplicación
config clase - cosas cargas sitio config
clase de base de datos - se conecta a MySQL y todas las cosas relacionadas con la base de datos
clase de registrador - se utiliza para registrar errores y depurar información
clase código de imagen - para el código de imagen en las formas
sesión de clase - inicia un inicio de sesión y agrega, quita, pone las variables de sesión para usar en la aplicación
clase caché - archivos similar a la clase de sesión pero para cachés artículos (caché, memcache, apc cache. Incluso puedo agregar mi material de sesión a esta clase algún día ya que todos estos cachés pueden usar el mismo tipo de métodos)
Todas las clases anteriores probablemente se usarán en cada carga de página en mi aplicación (probablemente me perdí algunas clases más) que se agregará más adelante)
Ahora, además de las clases anteriores que deberán incorporarse en la mayoría de las otras clases, tendré muchas más clases. Tendré una sección llamada módulos que tendrá cosas como ...
cuenta clase - crea nuevos usuarios, autentica usuarios, registra usuarios dentro y fuera de la aplicación, actualiza la configuración del usuario y mucho más.
usuarios de clase - muestra los perfiles de los usuarios, muestra a los usuarios en línea, los nuevos usuarios, todas las cosas que mostrar a los usuarios del sitio
foros clase - será para la sección de foros
blogs clase - para la sección de blogs
clase fotos - todas las cosas relacionadas con foto
comentarios clase - maneja los comentarios para las fotos y los perfiles
Habrá muchas más de este tipo de clases para diferentes secciones del sitio.
Este segundo conjunto de clases enumeradas anteriormente para las secciones muy probablemente requerirá que la mayoría de las clases del primer conjunto sean inyectadas en ellas.
¿Debo usar un registro para almacenar los objetos del primer conjunto de clases y simplemente insertar el registro en todos los objetos de clase en el segundo conjunto de clases?
¿O debería usar el constructor para cargarlos? En este ejemplo, habría como 7 objetos para inyectar en las otras clases, eso parece mucho. ¿Estoy haciendo esto mal?
--- --- EDITAR
Soy consciente del patrón singleton, pero no creo que es mi mejor opción aquí
--- --- EDIT 2
Como algunos han mencionado, la necesidad de pasar tanto como 7 objetos parece MUCHO y es por eso que estoy buscando sugerencias. Por suerte para mí, este proyecto está en las etapas iniciales, por lo que ahora es el momento de realizar cambios en la estructura.
Un ejemplo sería una clase en la sección de mis foros. La clase de foros necesitaría acceso a datos de sesión, posibles datos en caché, el objeto configs, objeto de base de datos. ¿Voy por esto de la manera incorrecta?
Relacionado: http://stackoverflow.com/questions/2420193/dependency-injection-constructor-madness –
Eliminado mi respuesta, porque usted lo mencionó también. Ir con el patrón de registro. – mhitza
Si sus objetos necesitan 7 objetos para ser inyectados solo para funcionar, cuestionaré la arquitectura subyacente de esas clases. Lo ideal es que solo necesites un par de objetos. Alternativamente, los envases de Inyección de Dependencia pueden aliviar parte de su estrés ... personalmente, no soy un fanático. – CaseySoftware