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.