Zend Application Namespace
Über die application.ini lässt sich der Namespace der Applikation
festlegen.
Nochmals zur Erinnerung:
Der Namespace ist immer der erste Teil eines Klassennamens. Namespaces
ermöglichen dem Autoloader schnell zu entscheiden, wie er einen Namen
auflösen soll.
Grundsätzlich kann man für den Autoloader beliebige viele Namespaces
festlegen. Auch lassen sich für die weitere Auflösung des Klassennamens
Regeln festlegen.
Um die allgemeine Verwendung von Namespaces von den festgelegten
Namespace in der application.ini unterscheiden zu können verwende ich für
den in der ini festgelegten Namespace den Begriff Applikation-Namespace.
Für eine Applikation gibt es immer nur einen
Applikation-Namespace.
Den Applikation-Namespace sollte man nicht vermischen
mit den Namespaces für allgemeinere Klassen zB Libraries. Sinnvollerweise
sollten die Klassen für den Applikation-Namespace in der Applikation
stehen und auch nur dort verwendet werden.
Diesen Namespace kann man als simple Verwaltung der üblichen
applikationspezifischen Objekte betrachten.
In der application.ini wird
appnamespace = "My"
autoloaderNamespaces.My = "MyApp"
der Namespace für die Applikation gesetzt.
Im Rahmen des Bootstrapping wird dann die Autoloader-Resource erzeugt.
Es werden automatisch einige Resourcen und Pfade mit erzeugt. Der
Basispfad zu den Pfaden wird erstellt mit mit
„Zend_Application_Module_Autoloader::getBasePath()“.
Namespace | Pfad |
Model_DbTable | models/DbTable |
Model_Mapper | models/mappers |
Form | forms |
Model | models |
Plugin | plugins |
Service | services |
View_Helper | views/helpers |
View_Filter | views/filters |
Eine Einschränkung der Initialisierung über die Ini ist, daß man die
Namespaces und ihre Pfade nicht beeinflussen kann (es gibt einfach keine
Möglichkeiten dafür).
Auch kann man den Basispfad nicht über die ini setzen, dieser ist
automatisch auf das Applikationsverzeichnis gesetzt.
Wer also mehr mit Resourcen und Namespaces zB für Bibliotheken machen
will, der kommt um eine Ausprogrammierung (in der Bootstrap) nicht drum
herum.