En Zend Framework, el objeto Zend_Application tiene un objeto bootstrap para arrancar o configurar los componentes. La clase Bootstrap a su vez tiene acceso al objeto zend_application para acceder a los parámetros de configuración.
Mi pregunta es qué tipo de patrón es este o es un olor a código debido a la dependencia circular.Objetos que se conocen entre sí
7
A
Respuesta
2
Zend Framework 1 está hinchado, eso es seguro.
El motivo de la propiedad $_application
que representa una relación bidireccional se debe a los archivos de arranque independientes del módulo.
Es extraño, creo, porque cuando se trata de módulos, en lugar de tener el conjunto Zend_Aplication
que tendrá el sistema de arranque principal en lugar:
/**
* Set application/parent bootstrap
*
* @param Zend_Application|Zend_Application_Bootstrap_Bootstrapper $application
* @return Zend_Application_Bootstrap_BootstrapAbstract
*/
public function setApplication($application)
{
if (($application instanceof Zend_Application)
|| ($application instanceof Zend_Application_Bootstrap_Bootstrapper)
) {
if ($application === $this) {
throw new Zend_Application_Bootstrap_Exception('Cannot set application to same object; creates recursion');
}
$this->_application = $application;
} else {
throw new Zend_Application_Bootstrap_Exception('Invalid application provided to bootstrap constructor (received "' . get_class($application) . '" instance)');
}
return $this;
}
Hay una gran cantidad de olor código también:
/**
* Constructor
*
* Sets application object, initializes options, and prepares list of
* initializer methods.
*
* @param Zend_Application|Zend_Application_Bootstrap_Bootstrapper $application
* @return void
* @throws Zend_Application_Bootstrap_Exception When invalid application is provided
*/
public function __construct($application)
{
$this->setApplication($application);
$options = $application->getOptions();
$this->setOptions($options);
}
el archivo boostrap necesitan las opciones, así que en vez de asking for the options, que espera que la Zend_Application a continuación, obtener las opciones:
$options = $application->getOptions();
$this->setOptions($options);
Parece que simplemente ignoran el tipo de interfaz esperada por el método setApplication() y que puede ser uno de los siguientes:
- Zend_Application
- Zend_Application_Bootstrap_Bootstrapper
- Zend_Application_Bootstrap_ResourceBootstrapper
Me rendiría al tratar de entender este lío y cambiar a ZF 2, sin embargo;)
Cuestiones relacionadas
- 1. Dos clases que se refieren entre sí
- 2. Estructuras que se refieren entre sí
- 3. Objetos que se envían a sí mismos, ¿una buena idea?
- 4. ¿Alguna buena manera de hacer que dos objetos inmutables se refieran entre sí?
- 5. clases de python que se refieren entre sí
- 6. Instancias de tipo predeterminado que se refieren entre sí
- 7. ¿Cómo se comunican los programas entre sí?
- 8. ¿Las uniones discriminadas se refieren entre sí?
- 9. ¿cómo se comunican los hilos entre sí?
- 10. ¿Los objetos C# conocen el tipo de clase más específica?
- 11. Diferencias entre SÍ/VERDADERO?
- 12. ¿Se conocen problemas de falsos positivos con Valgrind?
- 13. ¿Los objetos de bytes de Python también se conocen como cadenas?
- 14. ¿Qué se entiende por clases en sí mismas son objetos?
- 15. ¿Sub directorios de autoconf con subpaquetes que dependen entre sí?
- 16. Las reglas de StyleCop y FxCop se excluyen entre sí
- 17. WPF MVVM: ¿Cómo se comunican ViewModels entre sí?
- 18. Agregar varias fuentes a UIAppFonts se anula entre sí
- 19. Compilación de C++ cuando dos clases se refieren entre sí
- 20. ¿Cómo se relacionan los tipos básicos de Delphi entre sí?
- 21. Varias solicitudes de AJAX se retrasan entre sí
- 22. 2 clases se refieren entre sí ¿está bien?
- 23. Cómo determinar si dos sectores circulares se superponen entre sí
- 24. MVVM: ¿cuál es la forma ideal para que los controles de usuario se comuniquen entre sí?
- 25. OpenGL: representación de dos planos transparentes que se intersectan entre sí: ¿imposible o no?
- 26. ¿Cómo hacer que el operador + funcione mientras se suman dos puntos entre sí?
- 27. Spring Framework Conexión de JVM entre sí
- 28. Django: objetos que se fusionan
- 29. MoMa reason "Implementarlo correctamente una vez que se conocen los detalles de 4,0 impl"
- 30. Utilice el atributo XmlInclude o SoapInclude para especificar tipos que no se conocen de forma estática
No estaría tan apurado, especialmente sabiendo cómo se comporta ZF2 en comparación con ZF1 (hinchado o no). –
@ WebnetMobile.com La idea es que es mejor estudiar el código fuente ZF2 que el ZF1. Dado que el OP no mencionó ningún error, solo se preguntó si hay olor a código. La respuesta es sí** –