Cuando está utilizando $front->setParam
, que está definiendo un parámetro en el controlador frontal.
Pero ese parámetro no está disponible en (o no debe utilizarse desde) otras capas de la aplicación, como el Modelo.
Zend_Registry
, como cualquier otra variable global, está disponible desde cualquier lugar de su aplicación, incluso dentro del Modelo.
Pero usar un Registro en lugar de un grupo de variables globales asegura que no tendrá muchas variables globales en todas partes: incluso si usar un Registro implica algún estado global (que no es tan bueno, debería decirse), es es mejor tener todo en un solo lugar.
Un par de ejemplos de la vida real podría ser:
- tienda de la conexión a la base de datos, que se establece en el bootsreap, sino que se utiliza en los modelos
- Globalmente almacenar un adaptador (o cualquier mecanismo) que se utilizará para hacer traducciones/localización en todas las capas de su aplicación, Zend Framework lo hace.
Al final, puedo encontrar Zend_Registry
útil?
Bueno, cuando se trata de tener un estado global, sí, es útil.
Pero si se puede evitar su uso, podría ser mejor: conceptualmente hablando, no es mejor que sus clases dependan de ningún estado global: más fácil de reutilizar, más fácil de probar, ...
Acerca de eso, Es posible que desee echar un vistazo a lo que Dependency Injection es.
Debe diferenciar 'Zend_Registry' de' Zend_Registry :: getInstance() '-singelton. La clase en sí misma se usa internamente en ZF sin ser global, por lo que 'Zend_Registry'! = Global. – chelmertz