# 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

- `$options`: optional. Optionen mit denen der Ressource Status gesetzt wird.

Der Konstruktor sollte die Übergabe von Optionen erlauben mit denen der Status initialisiert wird.

`setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap)`

`Zend_Application_Resource_Resource`

- `$bootstrap`: required. Parent Bootstrap der diese Ressource initialisiert.

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`

- `$options`: required. Optionen mit denen der Status gesetzt werden soll.

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(
        'pluginPaths' => array(
            'My_Resource' => 'My/Resource/',
        ),
        'resources' => array(
            // Wenn die folgende Klasse existiert:
            'My_Resource_View' => array(),

            // Dann ist das gleichwertig:
            'View' => array(),
        ),
    ));

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(
        'resources' => array(
            // Das lädt die standardmäßige 'View' Ressource:
            'View' => array(),

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