Théorie générale
Monter une application MVC configurée et prête à être lancée requière de plus en plus de
code au fur et à mesure de l'ajout de fonctionnalités : monter une base de données, configurer
la vue et ses aides, les layouts, enregistrer des plugins, des aides d'action et bien plus
encore ...
Aussi, vous réutiliserez souvent le même code dans vos tests, dans une tâche cron ou
encore un service. Il est certes possible d'inclure le script de bootstrap dans de tels cas,
mais souvent des variables seront dépendantes de l'environnement. Par exemple, vous n'aurez pas
besoin de MVC dans une tâche cron, ou alors vous aurez juste besoin de l'accès à la base de
données dans un script de service.
Zend_Application a pour but de simplifier ces processus et de promouvoir la
réutilisabilité de code en encapsulant les étages de définition du bootstrap en concepts
orientés objet.
Zend_Application se décompose en 3 parties :
Zend_Application: charge l'environnement PHP, à savoir les
include_paths et les autoloads, et instancie la classe de bootstrap demandée.
Zend_Application_Bootstrap: regroupement d'interfaces pour les
classes de bootstrap. Zend_Application_Bootstrap_Base propose des
fonctionnalités de base concernant l'amorçage (le bootstrap), à savoir des algorithmes
de vérification des dépendances et la possibilité de charger des ressources à la
demande.
Zend_Application_Resource est une interface pour les ressources de
bootstrap qui peuvent être chargées à la demande depuis les instances de
bootstrap.
Les développeurs créent une classe de bootstrap pour leur application en étendant
Zend_Application_Bootstrap_Base ou en implémentant (au minimum)
Zend_Application_Bootstrap_IBootstrap. Le point d'entrée (public/index.php)
chargera Zend_Application en l'instanciant et en lui passant :
L'environnement courant
Des options de bootstrapping
Les options de bootstrap incluent le chemin vers le fichier contenant la classe de
bootstrap, et optionnellement :
Des include_paths supplémentaires
Des espaces de nom d'autoload à enregistrer
Des paramètres php.ini à initialiser
Le nom de la classe pour le bootstrap (sinon "Bootstrap" sera utilisée)
Des paires prefix/chemin pour les ressources à utiliser
N'importe quelle ressource à utiliser (nom de classe ou nom court)
Des chemins additionnels vers un fichier de configuration à charger
Des options de configuration supplémentaires
Les options peuvent être un tableau, un objet Zend_Config, ou le chemin vers
un fichier de configuration.