Kernfunktionalität
Hier findet man API-artige Dokumentation über alle Kernkomponenten von
Zend_Application.
Zend_Application
Zend_Application bietet die Basisfunktionalität der Komponente, und
ist der Eintrittspunkt zur eigenen Zend Framework Anwendung. Sein Zweck ist zweigeteilt: das
Setup der PHP Umgebung (inklusive Autoloading), und das
Anwendungs-Bootstrap auszuführen.
Typischerweise, wird man die komplette Konfiguration an den
Zend_Application Konstruktor übergeben, aber man kann das Objekt auch
komplett konfigurieren indem dessen eigene Methoden verwendet werden. Diese Referenz dient
dazu beide Fälle zu zeigen.
Optionen für Zend_Application
Option |
Beschreibung |
phpSettings |
Array von php.ini Einstellungen die zu verwenden
sind. Die Schlüssel sollten die php.ini Schlüssel
sein.
|
includePaths |
Zusätzliche Pfade die dem include_path
vorangestellt werden. Sollte ein Array von Pfaden sein.
|
autoloaderNamespaces |
Array von zusätzlichen Namespaces die bei der
Zend_Loader_Autoloader Instanz zu registrieren
sind.
|
bootstrap |
Entweder der String mit dem Pfad zur Bootstrap Klasse, oder ein Array
mit Elementen für 'path' und 'class' für den Bootstrap der Anwendung.
|
Note: Namen der Optionen
Beachten Sie das die Namen für die Optionen von der Groß- und Kleinschreibung abhängen.
Zend_Application Methoden
Methode |
Rückgabewert |
Parameter |
Beschreibung |
__construct($environment, $options = null)
|
Void |
-
$environment: Benötigt.
String Repräsentation der aktuellen Anwendungsumgebung.
Typischerweise kann ein String "development", "testing", "qa"
oder "production" enthalten, wird aber von den eigenen
organisatorischen Notwendigkeiten bestimmt.
-
$options: Optional.
Das Argument kann einen der folgenden Werte haben:
-
String : Pfad zu einer
Zend_Config Datei für die eigene
Anwendung. $environment wird
verwendet um zu erkennen welche Sektion der
Konfiguration geholt werden soll.
Ab 1.10 kann man auch mehrere Pfade übergeben übergeben
welche Konfigurationsdateien enthalten die in eine
einzelne Konfiguration zusammengefügt werden sollen. Das
Hilft bei der Reduzierung von doppelten Konfigurationen
über mehrere Kontexte welche die gleichen gemeinsamen
Einstellungen teilen (z.B. Konfiguration für
HTTP, oder CLI,
welche alle einige Charakteristiken teilen aber mit
deren eigenen wiedersprüchlichen Werten für andere)
oder indem eine lange Konfiguration in viele kleinere
kategorisierte Dateien geteilt wird. Der Parameter ist
in diesem Fall ein Array mit einem einzelnen Schlüssel
"configs" dessen Wert ein Array von Dateien ist welche
zusammengefügt werden. Beachte: Dies bedeutet das man
entweder einen literalen Pfad übergibt, oder
array("configs"=>array("/path1","/path2"[,...]));.
-
Array : Assoziatives
Array von Konfigurationsdaten für die eigene Anwendung.
-
Zend_Config:
Objekt Instanz der Konfiguration.
|
Konstruktor. Die Argumente sind wie beschrieben, und werden verwendet
um den initialen Objektstatus zu setzen. Eine Instanz von
Zend_Loader_Autoloader wird während der
Instanziierung registriert. Optionen die an den Konstruktor übergeben
werden, werden an setOptions() weitergeleitet.
|
getEnvironment() |
String |
N/A |
Empfangen des Umgebungsstrings der an den Konstruktor übergeben wurde.
|
getAutoloader() |
Zend_Loader_Autoloader |
N/A |
Empfangen der Zend_Loader_Autoloader Instanz die
während der Instanziierung registriert wurde.
|
setOptions(array $options) |
Zend_Application |
|
Alle Optionen werden intern gespeichert, und der mehrfache Aufruf der
Methode wird Optionen zusammenfügen. Optionen die zu den verschiedenen
Setter Methoden passen werden an diese Methoden übergeben. Als Beispiel
wird die Option "phpSettings" dann an
setPhpSettings() übergeben. (Optionsnamen sind
abhängig von der Groß- und Kleinschreibung.
|
getOptions() |
Array |
N/A |
Empfängt alle Optionen die verwendet wurden um das Objekt zu
initialisieren; könnte verwendet werden um
Zend_Config Optionen zwischen Anfragen in ein
serialisierbares Format zu cachen.
|
hasOption($key) |
Boolean |
|
Erkennt ob eine Option mit dem spezifizierten Schlüssel registriert
wurde oder nicht. Schlüssel sind unabhängig von der Groß- oder
Kleinschreibung.
|
getOption($key) |
Mixed |
|
Empfängt den Optionswert eines angegebenen Schlüssels. Gibt
NULL zurück wenn der Schlüssel nicht existiert.
|
setPhpSettings(array $settings, $prefix = '')
|
Zend_Application |
-
$settings: Benötigt.
Assoziatives Array von PHP
INI Einstellungen.
-
$prefix: Optional.
String Präfix der Optionsschlüssel vorangestellt werden soll.
Wird intern verwendet um das Mapping von verschachtelten Array
zu Punkt-getrennten php.ini Schlüssels zu
erlauben. Bei normaler Verwendung sollte dieses Argument nie von
einem Benutzer übergeben werden.
|
Setzt Laufzeit php.ini Einstellungen.
Punkt-getrennte Einstellungen können hierarchisch verschachtelt sein
(welche in Zend_Config INI
Dateien auftreten können) über ein Array-von-Arrays, und wird trotzdem
korrekt aufgelöst.
|
setAutoloaderNamespaces(array $namespaces)
|
Zend_Application |
|
Registriert den Namespace mit der
Zend_Loader_Autoloader Instanz.
|
setBootstrap($path, $class = null) |
Zend_Application |
-
$path: Benötigt.
Kann entweder eine Instanz von
Zend_Application_Bootstrap_Bootstrapper,
ein String Pfad zur Bootstrap Klasse, ein assoziatives Array von
Klassenname => Dateiname, oder ein assoziatives Array mit den
Schlüsseln 'class' und 'path' sein.
-
$class: Optional. Wenn
$path ein String ist, kann
$class spezifiziert werden, und sollte ein
String des Klassennamens der Klasse sein die in der Datei
enthalten ist die den Pfad repräsentiert.
|
getBootstrap() |
NULL |
Zend_Application_Bootstrap_Bootstrapper
|
N/A |
Empfängt die registrierte Bootstrap Instanz. |
bootstrap() |
Void |
N/A |
Ruft die bootstrap() Methode des Bootstraps auf
um die Anwendung zu bootstrappen.
|
run() |
Void |
N/A |
Ruft die run() Methode des Bootstraps auf um
die Anwendung auszuführen.
|
Zend_Application_Bootstrap_Bootstrapper
Zend_Application_Bootstrap_Bootstrapper ist das Basisinterface das
alle Bootstrap Klassen implementieren müssen. Die Basisfunktionalität zielt auf
Konfiguration, Identifikation von Ressourcen, Bootstrapping (entweder von individuellen
Ressourcen oder der kompletten Anwendung), und dem Dispatchen der Anwendung ab.
Die folgenden Methoden sind zusammengenommen die Definition des Interfaces.
Zend_Application_Bootstrap_Bootstrapper Interface
Methode |
Rückgabewert |
Parameter |
Beschreibung |
__construct($application) |
Void |
|
Konstruktor. Akzeptiert ein einzelnes Argument, welche ein
Zend_Application oder ein anderes Bootstrap
Objekt sein sollte.
|
setOptions(array $options) |
Zend_Application_Bootstrap_Bootstrapper |
|
Typischerweise wird jede Option die einen passenden Setter hat diesen
Setter aufrufen; andernfalls, wird die Option einfach für ein späteres
Empfangen gespeichert.
|
getApplication() |
Zend_Application |
Zend_Application_Bootstrap_Bootstrapper
|
N/A |
Empfängt das Anwendungs oder Bootstrap Objekt das über den Konstruktor
übergeben wurde.
|
getEnvironment() |
String |
N/A |
Empfängt den Environment String der mit dem Eltern-Anwendungs oder
Bootstrap Objekt registriert wurde.
|
getClassResources() |
Array |
N/A |
Empfängt eine Liste von vorhandenen Ressource Initialisierungs-Namen
die in der Klasse definiert sind. Das kann für jede Implementierung
speziell sein.
|
bootstrap($resource = null) |
Mixed |
|
Wenn $resource leer ist werden alle Bootstrap
Ressourcen ausgeführt. Wird ein String angegeben, wird diese einzelne
Ressource ausgeführt; wird ein Array angegeben, wird jede Ressource in
diesem Array ausgeführt.
|
run() |
Void |
N/A |
Definiert welche Anwendungslogik nach dem Bootstrapping ausgeführt wird.
|
Zend_Application_Bootstrap_ResourceBootstrapper
Zend_Application_Bootstrap_ResourceBootstrapper ist ein Interface das
zu Verwenden ist wenn externe Ressourcen geladen werden -- z.B. wenn ein oder mehrere
Ressourcen nicht direkt in der Klasse definiert werden, sonder über Plugins. Es sollte
in Verbindung mit Zend_Application_Bootstrap_Bootstrapper;
verwendet werden; Zend_Application_Bootstrap_BootstrapAbstract
implementiert diese Funktionalität.
Die folgenden Methoden machen zusammen die Definition des Interfaces.
Zend_Application_Bootstrap_ResourceBootstrapper Interface
Methode |
Rückgabewert |
Parameter |
Beschreibung |
registerPluginResource($resource, $options = null)
|
Zend_Application_Bootstrap_ResourceBootstrapper
|
-
$resource: Benötigt.
Ein Ressourcen Name oder ein
Zend_Application_Resource_Resource
Objekt.
-
$options: Optional. Ein
Array oder Zend_Config Objekt das an die
Ressource bei der Instanziierung zu übergeben ist.
|
Registriert eine Ressource mit der Klasse, und bietet die Übergaben
einer optionalen Konfiguration an diese Ressource an.
|
unregisterPluginResource($resource) |
Zend_Application_Bootstrap_ResourceBootstrapper
|
|
Entfernt eine Plugin Ressource von der Klasse. |
hasPluginResource($resource) |
Boolean |
|
Erkennt ob eine spezifische Ressource in der Klasse registriert wurde.
|
getPluginResource($resource) |
Zend_Application_Resource_Resource |
|
Empfängt die Instanz einer Plugin Ressource durch Ihren Namen.
|
getPluginResourceNames() |
Array |
N/A |
Empfängt eine Liste aller registrierten Plugin Ressource Namen.
|
setPluginLoader(Zend_Loader_PluginLoader_Interface
$loader)
|
Zend_Application_Bootstrap_ResourceBootstrapper
|
|
Registriert eine Instanz eines Plugin Loaders die zu verwenden ist wenn
die Klassennamen eines Plugins aufgelöst werden sollen.
|
getPluginLoader() |
Zend_Loader_PluginLoader_Interface |
N/A |
Empfängt den registrierten Plugin Loader. |
Zend_Application_Bootstrap_BootstrapAbstract
Zend_Application_Bootstrap_BootstrapAbstract ist eine abstrakte
Klasse welche die Basisfunktionalität des normalen Bootstrappings bietet. Sie implementiert
sowohl Zend_Application_Bootstrap_Bootstrapper
als auch Zend_Application_Bootstrap_ResourceBootstrapper.
Zend_Application_Bootstrap_BootstrapAbstract Methoden
Methode |
Rückgabewert |
Parameter |
Beschreibung |
__construct($application) |
Void |
|
Constructor. Akzeptiert ein einzelnes Argument, welches ein
Zend_Application Objekt oder ein anderes
Bootstrap Objekt sein sollte.
|
setOptions(array $options) |
Zend_Application_Bootstrap_Bootstrapper |
|
Jede Option die einen passenden Setter hat wird diesen Setter aufrufen;
andernfalls wird die Option einfach für ein späteres Empfangen
gespeichert. Wenn die eigene Klasse, als Beispiel, eine
setFoo() Methode definiert, würde die Option
'foo' als Wert an diese Methode übergeben werden.
Zwei zusätzliche, spezielle Options Schnüssel können auch verwendet
werden. pluginPaths kann verwendet werden um einen
Präfix Pfad zu Plugin Ressourcen zu spezifizieren; er solte ein Array
von Klassenpräfix zu Instanziierungs Options Paaren sein.
resources kann verwendet werden um eine Plugin
Ressource zu spezifizieren die verwendet werden soll, und sollte aus
Paaren von Plugin Ressource zu Instanziierungs Optionen bestehen.
|
getOptions() |
Array |
N/A |
Gibt alle über setOptions() registrierten
Optionen zurück.
|
hasOption($key) |
Boolean |
|
Erkennt ob ein Optionsschlüssel vorhanden ist. |
getOption($key) |
Mixed |
|
Empfängt den Wert der mit dem Optionsschlüssel verknüpft ist; gibt
NULL zurück wenn keine Option mit diesem Schlüssel
registriert wurde.
|
setApplication(Zend_Application |
Zend_Application_Bootstrap_Bootstrapper $application)
|
Zend_Application_Bootstrap_BootstrapAbstract
|
|
Registriert das Eltern-Anwendungs oder Bootstrap Objekt.
|
getApplication() |
Zend_Application |
Zend_Application_Bootstrap_Bootstrapper
|
N/A |
Empfängt das Anwendungs oder Bootstrap Objekt das über den Konstruktor
übergeben wurde.
|
getEnvironment() |
String |
N/A |
Empfängt den Umgebungs String der mit dem Eltern-Anwendungs oder
Bootstrap Objekt registriert wurde.
|
getClassResources() |
Array |
N/A |
Empfängt eine Liste von vorhandenen Ressourcen Initialisierungsnamen die
in der Klasse definiert sind. Das kann von der Implementierung abhängig
sein.
|
getContainer() |
Object |
N/A |
Empfängt den Container der die Ressourcen speichert. Wenn aktuell kein
Container registriert ist, wird eine Instanz von Zend_Registry registriert bevor diese
retourniert wird.
|
setContainer($container) |
Zend_Application_Bootstrap_BootstrapAbstract
|
|
Bietet einen Container in dem Ressourcen gespeichert werden. Wenn eine
Ressourcen Methode oder ein Plugin einen Wert zurückgibt, wird dieser
im Container gespeichert um später empfangen werden zu können.
|
hasResource($name) |
Boolean |
|
Wenn eine Ressourcen-Methode oder ein Plugin einen Wert zurückgibt, wird
dieser im Ressourcen Container gespeichert (siehe
getContainer() und
setContainer()). Diese Methode zeigt ob ein
Wert für dies Ressouce gesetzt wurde oder nicht.
|
getResource($name) |
Mixed |
|
Wenn eine Ressourcen-Methode oder ein Plugin einen Wert zurückgibt, wird
dieser im Ressourcen Container gespeichert (siehe
getContainer() und
setContainer()). Diese Methode gibt die
Ressource vom Container zurück.
|
bootstrap($resource = null) |
Mixed |
|
Wenn $resource leer ist, werden alle Bootstrap
Ressourcen ausgeführt. Wenn es ein String ist, wird diese einzelne
Ressource ausgeführt; wenn es ein Array ist, wird jede Ressource in
diesem Array ausgeführt.
Diese Methode kann verwendet werden um individuelle Bootstraps
auszuführen die entweder in der Klasse selbst definiert sind, oder über
eine Ressource Plugin Klasse. Eine Ressource die in der Klasse definert
ist wird bevorzugt, vor einem Ressource Plugin, ausgeführt wenn ein
Namenskonflikt besteht.
|
run() |
Void |
N/A |
Definiert welche Anwendungslogik nach dem Bootstrapping ausgeführt wird.
|
__call($method, $args) |
Mixed |
|
Bietet einen einfachen Weg um individuelle Ressourcen zu Bootstrappen
indem es erlaubt 'bootstrap<ResourceName>()' aufzurufen, anstatt
das die bootstrap() Methode verwendet wird.
|
Zend_Application_Bootstrap_Bootstrap
Zend_Application_Bootstrap_Bootstrap ist eine konkrete
Implementation von Zend_Application_Bootstrap_BootstrapAbstract.
Dessen primäre Features sind, das es die Front Controller
Ressource registriert und das die run() Methode zuerst
prüft ob ein Standardmodul definiert ist, und dann den Front Controller ausführt.
In den meisten Fällen wird man diese Klasst für die eigenen Bedürfnisse des Bootstrappens
erweitern, oder einfach diese Klasse verwenden und eine Liste von Ressource Plugins
angeben die zu verwenden sind.
Aktivieren des AutoLoadings für die Anwendung
Zusätzlich bietet diese Bootstrap Implementation die Möglichkeit des "Namespace" oder
Klassenpräfix für Ressourcen zu spezifizieren der in seinem Baum ist, was wiederum das
automatische Laden der verschiedenen Anwendungsressourcen ermöglicht; als wichtigstes
instanziert es ein Zend_Application_Module_Autoloader
Objekt, welches den angefragten Namespace und das Verzeichnis des Bootstraps als
Argument angibt. Man kann diese Funktionalität aktivieren indem ein Namespace an die
Konfigurations Option "appnamespace" angegeben wird. Als INI
Beispiel:
appnamespace = "Application"
Oder als XML:
<appnamespace>Application</appnamespace>
Standardmäßig aktiviert Zend_Tool diese Option mit dem Wert
"Application".
Alternativ kann einfach die Eigenschaft $_appNamespace der eigenen
Bootstrap Klasse mit dem korrekten Wert definiert werden:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected $_appNamespace = 'Application';
}
Zend_Application_Resource_Resource
Zend_Application_Resource_Resource ist ein Interface für Plugin
Ressourcen die mit Bootstrap Klassen verwendet werden welche
Zend_Application_Bootstrap_ResourceBootstrapper implementieren. Von
Ressourcen Plugins wird erwartet das Sie Konfiguration erlauben, das Sie Bootstrapping
erlauben, und ein Strategy Pattern für die Initialisierung der Ressource implementieren.
Zend_Application_Resource_Resource Interface
Methode |
Rückgabewert |
Parameter |
Beschreibung |
__construct($options = null) |
Void |
|
Der Konstruktor sollte die Übergabe von Optionen erlauben mit denen der
Status initialisiert wird.
|
setBootstrap(Zend_Application_Bootstrap_Bootstrapper
$bootstrap)
|
Zend_Application_Resource_Resource
|
|
Sollte es erlauben ein Eltern Bootstrap Objekt zu registrieren.
|
getBootstrap() |
Zend_Application_Bootstrap_Bootstrapper |
N/A |
Empfängt die registrierte Bootstrap Instanz. |
setOptions(array $options) |
Zend_Application_Resource_Resource |
|
Setzt den Ressource Status. |
getOptions() |
Array |
N/A |
Empfängt registrierte Optionen. |
init() |
Mixed |
N/A |
Strategy Pattern: Führt die Initialisierung an der Ressource durch.
|
Zend_Application_Resource_ResourceAbstract
Zend_Application_Resource_ResourceAbstract ist eine abstrakte Klasse
die Zend_Application_Resource_Resource
implementiert, und ist ein guter Startpunkt für die Erstellung eigener Plugin Ressourcen.
Beachte: Diese abstrakte Klasse implementiert die init() Methode
nicht; das wird der Definition in einer konkreten Erweiterung dieser Klasse vorbehalten.
Zend_Application_Resource_ResourceAbstract Methods
Methode |
Rückgabewert |
Parameter |
Beschreibung |
__construct($options = null) |
Void |
|
Der Konstruktor sollte die Übergabe von Optionen erlauben mit denen der
Status initialisiert wird.
|
setBootstrap(Zend_Application_Bootstrap_Bootstrapper
$bootstrap)
|
Zend_Application_Resource_Resource |
|
Sollte es erlauben das Parent Bootstrap Objekt zu registrieren.
|
getBootstrap() |
Zend_Application_Bootstrap_Bootstrapper |
N/A |
Empfange die registrierte Bootstrap Instanz. |
setOptions(array $options) |
Zend_Application_Resource_Resource |
|
Set resource state. |
getOptions() |
Array |
N/A |
Empfangen der registrierten Optionen. |
Ressourcen Namen
Wenn man Ressourcen Plugins registriert, besteht ein Problem das hierdurch entsteht
darin, wie man von der Eltern-Bootstrap Klasse auf diese verweist. Es gibt drei
verschiedene Mechanismen die verwendet werden können, abhängig davon wie die
Bootstrap und deren Plugin Ressourcen konfiguriert wurden.
Erstens kann man, wenn die Plugins mit einem definierten Präfix Pfad definiert wurden,
einfach mit Ihrem "Kurz-Namen" auf die verweisen -- z.B. der Teil des Klassennamens
der dem Klassen Präfix folgt. Als Beispiel kann auf die Klasse
"Zend_Application_Resource_View" einfach mit "View" verweist
werden, da der Präfix Pfad "Zend_Application_Resource" bereits
registriert ist. Man kann Sie registrieren, indem der komplette Klassenname oder der
Kurzname verwendet wird:
$app = new Zend_Application (APPLICATION_ENV, array(
'My_Resource' => 'My/Resource/',
),
// Wenn die folgende Klasse existiert:
'My_Resource_View' => array(),
// Dann ist das gleichwertig:
),
));
In jedem Fall kann man die Ressource bootstrappen und Sie später erhalten indem der
Kurzname verwendet wird:
$bootstrap->bootstrap('view');
$view = $bootstrap->getResource('view');
Zweitens kann man, wenn kein passender Plugin Pfad definiert ist, trotzdem eine
Ressource durch den kompletten Klassennamen übergeben. In diesem Fall kann man auf
Sie verweisen indem der komplette Klassenname der Ressource verwendet wird:
$app = new Zend_Application (APPLICATION_ENV, array(
// Das lädt die standardmäßige 'View' Ressource:
// Wärend das eine Ressource mit einem speziellen Klassennamen lädt:
'My_Resource_View' => array(),
),
));
Offensichtlich mach das eine Referenz auf die Ressource viel einfacher:
$bootstrap->bootstrap('My_Resource_View');
$view = $bootstrap->getResource('My_Resource_View');
Das bringt uns zur dritten Option. Man kann einen expliziten Namen spezifizieren, zu
dem eine Ressourceklasse sich registriert. Das kann durch das Hinzufügen einer public
$_explicitType Eigenschaft, mit einem Stringwert, in der Plugin
Ressourceklasse durchgeführt werden; dieser Wert wird dann immer verwendet wenn man
zur Plugin Ressource über die Bootstrap verweisen will. Als Beispiel, definieren wir
unsere eigene View Klasse:
class My_Resource_View extends Zend_Application_Resource_ResourceAbstract
{
public $_explicitType = 'My_View';
public function init()
{
// Initialisierungen durchführen...
}
}
Wir können dann die Ressource bootstrappen, oder Sie durch den Namen
"My_View" erhalten:
$bootstrap->bootstrap('My_View');
$view = $bootstrap->getResource('My_View');
Durch Verwendung der verschiedenen Wege der Benennung kann man bestehende Ressourcen
überschreiben, eigene hinzufügen, verschiedene Ressourcen mischen um komplexe
Initialisierungen durchzuführen, und mehr.
|
|