# 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.

## 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`

- `$options`: Benötigt. Ein Array von Anweundungsoptionen.

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

- `$key`: String des Optionsschlüssels der gesucht wird.

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

- `$key`: String des Optionsschlüssels der gesucht wird.

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`

- `$namespaces`: Benötigt. Array von Strings die den Namespace repräsentieren der mit der `Zend_Loader_Autoloader` Instanz registriert wird.

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.