Wenn Sie $front->setParam
verwenden, definieren Sie einen Parameter im Front Controller.
Aber dieser Parameter ist nicht verfügbar in (oder sollte nicht verwendet werden) andere Schichten der Anwendung, wie das Modell.
Zend_Registry
ist wie jede andere globale Variable von überall in Ihrer Anwendung verfügbar - auch im Modell.
Aber ein Registry statt einer Reihe von globalen Variablen sichert Ihnen nicht viele globale Variablen überall haben: selbst wenn ein Registry mit einigen globalen Zustand impliziert (was nicht so gut ist, sollte man sagen), es ist besser, alles an einem Ort zu haben.
Ein paar Beispiele aus der Praxis sein könnte:
- Speichern Sie die Verbindung zur Datenbank, die in der bootsreap hergestellt ist, aber in den Modellen
- Global speichert einen Adapter (oder verwendet irgendeinen Mechanismus), der verwendet wird, um Übersetzungen/Lokalisierung in allen Schichten Ihrer Anwendung zu machen - Zend Framework selbst tut das.
Am Ende finde ich Zend_Registry
nützlich?
Nun, wenn es darum geht, einen globalen Zustand zu haben, ja, es ist nützlich.
Aber wenn es Nutzung ist vermieden werden kann, könnte es besser sein: vom Konzept her gesehen, nicht mit Ihren Klassen hängen von jedem globalen Zustand ist besser: leichter wiederverwenden, einfacher zu testen, ...
über das, Vielleicht möchten Sie einen Blick darauf werfen, was Dependency Injection ist.
Sie sollten 'Zend_Registry' von der 'Zend_Registry :: getInstance()' -singelton unterscheiden. Die Klasse selbst wird intern in ZF verwendet, ohne global zu sein, also 'Zend_Registry'! = Global. – chelmertz