# Zend_Application_Resource_ResourceAbstract

`Zend_Application_Resource_ResourceAbstract` est une classe abstaite implementant Zend_Application_Resource_Resource, c'est un bon point de départ pour créer vos propres plugins de ressources.

Note: Cette classe abstraite n'implémente pas la méthode `init()`; elle doit donc être implémentée par les extensions concrêtes de cette classe.

## Méthodes de Zend_Application_Resource_ResourceAbstract

Méthode | Valeur de retour | Paramètres | Description
--- | --- | --- | ---

`__construct($options = null)`

Void

- `$options`: optionnel. Options de configuration de la ressource.

Le constructeur doit accepter un paramètres permettant de définir l'état de la ressource.

`setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap)`

`Zend_Application_Resource_ResourceAbstract`

- `$bootstrap` : requis. Bootstrap parent initialisant cette resource.

Doit accepter l'enregistrement du bootstrap parent.

`getBootstrap()` | `Zend_Application_Bootstrap_Bootstrapper` | N/A | Récupère l'objet bootstrap enregistré.

`setOptions(array $options)`

`Zend_Application_Resource_ResourceAbstract`

- `$options` : required. Options de la ressource.

Définit l'état de la ressource.

`getOptions()` | Array | N/A | Retourne les options enregistrées.

## Noms des resources

Lorque vous enregistrez des plugins de ressources, il existe alors 3 manières d'y faire référence dans la classe du bootstrap parent, en fonction de la manière dont vous avez configuré le bootstrap.

D'abord, si vos classes de plugins existent dans un chemin précis, vous pouvez alors y faire référence simplement par leur nom court -- la portion du nom de la classe située après le préfixe de classe. Par exemple, la classe "`Zend_Application_Resource_View`" peut être référencée simplement via "View" car le préfixe "`Zend_Application_Resource`" est déja enregistré. Vous pouvez aussi utiliser le nom long de classe complet :

    $app = new Zend_Application(APPLICATION_ENV, array(
        'pluginPaths' => array(
            'My_Resource' => 'My/Resource/',
        ),
        'resources' => array(
            // Si la classe suivante existe:
            'My_Resource_View' => array(),

            // alors ceci est équivalent:
            'View' => array(),
        ),
    ));

Quoiqu'il en soit, vous pouvez lancer (bootstrap) la ressource ou la récupérer via son nom court:

    $bootstrap->bootstrap('view');
    $view = $bootstrap->getResource('view');

Ensuite, si aucun chemin précis n'est enregistré, il reste possible de passer ses plugins de ressources via leur nom de classe complet :

    $app = new Zend_Application(APPLICATION_ENV, array(
        'resources' => array(
            // Ceci va charger le plugin de ressource standard 'View':
            'View' => array(),

            // Alors que ceci charge une classe spécifiquement via son nom:
            'My_Resource_View' => array(),
        ),
    ));

La récupération de ces objets se fait alors de manière plus clarifiée :

    $bootstrap->bootstrap('My_Resource_View');
    $view = $bootstrap->getResource('My_Resource_View');

La troisième méthode découle des deux précédentes. Il est possible de donner un nom court à n'importe quelle classe. Ajoutez une variable publique `$_explicitType` dans la classe du plugin, sa valeur sera alors utilisée comme nom court pour référencer le plugin dans le bootstrap. Définissons par exemple notre propre vue :

    class My_Resource_View extends Zend_Application_Resource_ResourceAbstract
    {
        public $_explicitType = 'My_View';

        public function init()
        {
            // du code ici...
        }
    }

Nous pouvons dès lors lancer cette ressource (bootstrap) ou la récupérer via le nom "`My_View`":

    $bootstrap->bootstrap('My_View');
    $view = $bootstrap->getResource('My_View');

Grâce à ses différentes manières de faire, vous pouvez redéfinir des plugins existants, en ajouter ou encore les mixer pour accomplir des tâches d'initialisation complexes.