Exemples

Fonctionnalités principales

Ici vous trouverez une documentation type API concernant les composants coeurs de Zend_Application.

Zend_Application

Zend_Application est la classe de base du composant et le point d'entrée de votre application Zend Framework. Ses buts sont multiples : configurer l'environnement PHP (incluant l'autoloading) et exécuter le bootstrap de votre application.

Typiquement, vous allez passer toute la configuration au constructeur de Zend_Application, mais vous pouvez aussi configurer l'objet via ses méthodes. Ce chapitre illustrera les deux aspects.

Zend_Application options
Option Description
phpSettings

Tableau de paramètres php.ini à utiliser. Les clés doivent être des clés reconnues dans php.ini.

includePaths

Chemins additionnels à ajouter à include_path. Ces chemins sont ajoutés avant l'include_path. L'option doit être un tableau de chemins.

autoloaderNamespaces

Tableau d'espaces de noms à enregistrer dans Zend_Loader_Autoloader.

bootstrap

Soit une chaîne vers le fichier contenant la classe de bootstrap, soit un tableau avec les clés 'path' et 'class' menant vers le bootstrap.

Note: Noms des options
Notez que les noms des options ne sont pas sensibles à la casse.

Méthodes dans Zend_Application
Méthode Valeur de retour Paramètres Description
__construct($environment, $options = null) Void
  • $environment : requis, Chaîne représentant l'environnement actuel dans lequel tourne l'application. Par exemple "development", "testing", "qa", ou "production". Les significations de ces chaînes sont à définir par la suite.

  • $options : optionnel.

    • String  : chemin vers un fichier Zend_Config à charger pour la configuration de votre application. $environment sera utilisé pour déterminer la section de configuration à charger depuis le fichier.

      As of 1.10, you may also pass multiple paths containing config files to be merged into a single configuration. This assists in reducing config duplication across many contexts which share common settings (e.g. configs for HTTP, or CLI, each sharing some characteristics but with their own conflicting values for others) or merely splitting a long configuration across many smaller categorised files. The parameter in this case is an array with a single key "configs" whose value is an array of the files to merge. Note: this means you either pass a literal path, or array("configs"=>array("/path1","/path2"[,...]));.

    • Array  : tableau associatif de données de configuration pour votre application.

    • Zend_Config : un instance d'objet de configuration.

Une instance de Zend_Loader_Autoloader est enregistrée lors de l'instanciation. Les options passées au constructeur sont passées à setOptions().

getEnvironment() String N/A

Récupère l'environnement passé au constructeur.

getAutoloader() Zend_Loader_Autoloader N/A

Récupère l'objet Zend_Loader_Autoloader enregistré lors de l'instanciation.

setOptions(array $options) Zend_Application
  • $options : requis. Un tableau d'options pour l'application.

Toutes les options sont stockées en interne, et appeler plusieurs fois la même méthode fusionnera les options qu'elle définit. Les options qui correspondent aux diverses méthodes setter seront passées à ces méthodes. Par exemple, l'option "phpSettings" sera passée à setPhpSettings().

getOptions() Array N/A

Récupère toutes les options utilisées pour initialiser l'objet. Pourrait être utilisé pour mettre en cache les options Zend_Config entre chaque requête, par exemple.

hasOption($key) Boolean
  • $key : La clé de l'option à chercher

Indique si une option correspondant à une clé précise a été utilisée ou pas. Les clés sont insensibles à la casse.

getOption($key) Mixed
  • $key : La clé de l'option à récupérer

Récupère l'option correspondant à la clé passée, NULL si celle-ci n'existe pas.

setPhpSettings(array $settings, $prefix = '') Zend_Application
  • $settings : requis. Tableau associatif de paramètres PHP INI

  • $prefix : optionnel. Préfixe pour construire la chaîne des clés d'options. Utilisée en interne pour faire correspondre les clés php.ini séparés par des points (".") avec des tableaux à plusieurs niveaux. En temps normal, cet argument ne devrait jamais être utilisé par l'utilisateur.

Affecte à la volée des paramètres de php.ini. Les paramètres séparés par des points peuvent être imbriqués hiérarchiquement (comme dans le cas des paramètres INI de Zend_Config).

setAutoloaderNamespaces(array $namespaces) Zend_Application
  • $namespaces : requis. Tableau de chaînes représentant les espaces de noms à enregistrer dans Zend_Loader_Autoloader.

Enregistre des espaces de noms dans Zend_Loader_Autoloader.

setBootstrap($path, $class = null) Zend_Application
  • $path : requis. Peut être soit un objet de Zend_Application_Bootstrap_Bootstrapper, soit une chaîne représentant le chemin vers la classe de bootstrap, soit un tableau associatif nom de classe => chemin de fichier, ou encore un tableau associatif avec les clés "class" et "path".

  • $class : optionnel. Si $path est une chaîne, $class doit être indiqué et doit être une chaîne représentant le nom d'une classe contenue dans le fichier représenté par le chemin.

getBootstrap() NULL | Zend_Application_Bootstrap_Bootstrapper N/A

Récupère l'instance du bootstrap enregistrée.

bootstrap() Void N/A

Appelle la méthode bootstrap() du bootstrap pour lancer l'application.

run() Void N/A

Appelle la méthode run() du bootstrap pour lancer le dispatch de l'application.

Zend_Application_Bootstrap_Bootstrapper

Zend_Application_Bootstrap_Bootstrapper est l'interface de base que toutes les classes de bootstrap doivent implémenter. Les fonctionnalités apportées sont la configuration, l'identification des ressources, le bootstrap (d'une ressource ou de l'application entière), et le lancement (dispatching) de l'application.

Voici les méthodes définies par l'interface.

Méthodes de Zend_Application_Bootstrap_Bootstrapper
Méthode Valeur de retour Paramètres Description
__construct($application) Void
  • $application : requis. Accepte un argument instance de Zend_Application ou de Zend_Application_Bootstrap_Bootstrapper

Constructeur. Accepte un argument qui peut être une instance de Zend_Application ou un autre objet bootstrap.

setOptions(array $options) Zend_Application_Bootstrap_Bootstrapper
  • $options : requis. Tableaux d'options à configurer.

Une option qui correspond à un setter lui sera passé, sinon l'option est stockée pour pouvoir être utilisée plus tard.

getApplication() Zend_Application | Zend_Application_Bootstrap_Bootstrapper N/A

Récupère l'objet d'application passé au constructeur.

getEnvironment() String N/A

Récupère la chaîne d'environnement enregistrée dans l'objet d'application.

getClassResources() Array N/A

Retourne la liste des classes utilisées comme classes de ressources.

bootstrap($resource = null) Mixed
  • $resource : optionnel.

Si $resource est vide, exécute toutes les ressources. Si une chaîne est passée, exécute uniquement la ressource considérée. Enfin, si un tableau de chaînes est passé, toutes les ressources représentées par ses chaînes sont exécutées.

run() Void N/A

Définit la logique à lancer après avoir lancé le bootstrap.

Zend_Application_Bootstrap_ResourceBootstrapper

Zend_Application_Bootstrap_ResourceBootstrapper est une interface utilisée lorsqu'une classe de bootstrap chargera une ressource externe, ce qui signifie que les ressources peuvent ne pas être définies comme de simples méthodes, mais via des classes "plugins". Cette interface devrait être utilisée avec Zend_Application_Bootstrap_Bootstrapper ; Zend_Application_Bootstrap_BootstrapAbstract implémente cette fonctionnalité.

Voici les méthodes définies par l'interface.

Méthodes de Zend_Application_Bootstrap_ResourceBootstrapper
Méthode Valeur de retour Paramètres Description
registerPluginResource($resource, $options = null) Zend_Application_Bootstrap_ResourceBootstrapper
  • $resource : requis. Un nom de ressource ou un objet Zend_Application_Resource_Resource

  • $options : optionnel. Un tableau d'objets Zend_Config à passer au constructeur de la ressource.

Enregistre une ressource avec la classe, ajoutant une configuration optionnelle à fournir à la ressource.

unregisterPluginResource($resource) Zend_Application_Bootstrap_ResourceBootstrapper
  • $resource : requis. Nom de la ressource à effacer de la liste des ressources chargées.

Supprime un plugin de ressource de la classe.

hasPluginResource($resource) Boolean
  • $resource : requis. Nom de la ressource.

Détermine si une ressource donnée a été enregistrée.

getPluginResource($resource) Zend_Application_Resource_Resource
  • $resource : requis. Nom de la ressource à récupérer (string).

Récupère une instance de plugin de ressource par son nom.

getPluginResourceNames() Array N/A

Récupère une liste de noms de tous les plugins enregistrés.

setPluginLoader(Zend_Loader_PluginLoader_Interface $loader) Zend_Application_Bootstrap_ResourceBootstrapper
  • $loader : requis. Instance de PluginLoader (chargeur de classes) à utiliser pour résoudre les noms de plugins en classes.

Enregistre un PluginLoader (chargeur de classes) à utiliser pour résoudre les noms de plugins en classes.

getPluginLoader() Zend_Loader_PluginLoader_Interface N/A

Récupère l'objet pluginLoader chargé.

Zend_Application_Bootstrap_BootstrapAbstract

Zend_Application_Bootstrap_BootstrapAbstract est une classe abstraite qui propose les fonctionnalités de base d'un bootstrap classique. Elle implémente à la fois Zend_Application_Bootstrap_Bootstrapper et Zend_Application_Bootstrap_ResourceBootstrapper.

Méthodes de Zend_Application_Bootstrap_BootstrapAbstract
Méthode Valeur de retour Paramètres Description
__construct($application) Void
  • $application : requis. Accepte un objet Zend_Application ou Zend_Application_Bootstrap_Bootstrapper

Constructeur. Accepte un seul argument de type Zend_Application, ou un autre objet bootstrap.

setOptions(array $options) Zend_Application_Bootstrap_Bootstrapper
  • $options : requis. Tableau d'options à configurer.

Toute option possédant un setter l'invoquera, sinon l'option sera stockée pour une utilisation ultérieure. Par exemple, si votre classe fille définit une méthode setFoo(), l'option 'foo' passera sa valeur à cette méthode.

Deux options supplémentaires spéciales peuvent aussi être utilisée. pluginPaths spécifie des préfixes de chemin vers les plugins ; on attend ici un tableau de paires préfixes, chemins. resources permet de spécifier un plugin à utiliser.

getOptions() Array N/A

Retourne toutes les options enregistrées via setOptions().

hasOption($key) Boolean
  • $key : requis. Option dont on veut tester la présence.

Détermine si une option est présente.

getOption($key) Mixed
  • $key: requis. Option à récupérer.

Récupère la valeur de l'option associée à la clé passée comme paramètre  retourne NULL si aucune option n'est enregistrée avec cette clé.

setApplication(Zend_Application | Zend_Application_Bootstrap_Bootstrapper $application) Zend_Application_Bootstrap_BootstrapAbstract
  • $application : requis.

Enregistre l'objet application parent, ou un objet de bootstrap.

getApplication() Zend_Application | Zend_Application_Bootstrap_Bootstrapper N/A

Récupère l'objet application ou bootstrap passé par le constructeur.

getEnvironment() String N/A

Récupère l'environnement (chaîne) enregistré dans l'objet parent, application ou bootstrap.

getClassResources() Array N/A

Récupère la liste des noms des chargeurs de ressources définis dans la classe. Spécifique à l'implémentation.

getContainer() Object N/A

Récupère le conteneur stockant les ressources. Si aucun conteneur n'est spécifié, un objet Zend_Registry sera crée pour cet usage, puis retourné.

setContainer($container) Zend_Application_Bootstrap_BootstrapAbstract
  • $container, requis. Un objet dans lequel stocker les ressources.

Définit un conteneur mémorisant les ressources. Lorsqu'une ressource est demandée, elle est chargée puis stocker dans ce conteneur pour être retournée lors des prochains appels.

hasResource($name) Boolean
  • $name, requis. Nom de la ressource dont on veut vérifier la présence.

Lorsqu'une ressource est demandée (retournée par une méthode ou un plugin), elle est stockée dans un objet conteneur (voyez getContainer() et setContainer().) Cette méthode interroge le conteneur pour savoir si une ressource y est présente.

getResource($name) Mixed
  • $name, requis. Nom de la ressource à récupérer

Lorsqu'une ressource est demandée (retournée par une méthode ou un plugin), elle est stockée dans un objet conteneur (voyez getContainer() et setContainer().) Cette méthode récupère une ressource depuis le conteneur.

bootstrap($resource = null) Mixed
  • $resource: optionnel.

Si $resource est vide, charge toutes les ressources (bootstrap). Si une chaîne est passée, charge uniquement la ressource demandée. Enfin si un tableau est passé, charge les ressources nommées dans ce tableau.

Cette méthode peut être utilisée pour déclencher le chargement d'une ressource, définit sous forme de méthode ou de plugin (c'est égal). Attention si vous spécifiez à la fois une méthode et un plugin pour une même ressource, alors la méthode sera préférée comme bootstrap, le plugin sera ignoré.

run() Void N/A

Définit la logique applicative à lancer après le bootstrap (la configuration)

__call($method, $args) Mixed
  • $method : requis. Nom de la méthode appelée

  • $args : requis. Tableau d'arguments d'invocation pour la méthode.

Propose une interface agréable pour configurer (bootstrap) des ressources individuelles en appelant 'bootstrap<NomDeLaRessource>()' à la place de bootstrap().

Zend_Application_Bootstrap_Bootstrap

Zend_Application_Bootstrap_Bootstrap est une implémentation concrète de Zend_Application_Bootstrap_BootstrapAbstract. Ces caractéristiques principales sont l'enregistrement de la ressource Front Controller, et la méthode run() qui vérifie d'abord la présence d'un module par défaut dans le contrôleur frontal, avant de lancer le dispatching.

Dans la plupart des cas, vous étendrez cette classe dans vos bootstraps, ou encore vous utiliserez cette classe en lui fournissant une liste de plugins à utiliser.

Activer l'autoload de l'application

De plus, cette implémentation de bootstrap fournit la possibilité de spécifier l'espace de noms ou le préfixe de classe pour les ressources situées dans son arborescence, ce qui va activer le chargement automatique des différentes resources de l'application ; essentiellement, ceci instancie un objet Zend_Application_Module_Autoloader, en fournissant l'espace de noms requêté et le dossier de bootstrap en tant qu'arguments. Vous pouvez activer cette fonctionnalité en fournissant l'espace de noms à l'option de configuration "appnamespace". Par exemple avec un fichier INI :

  1. appnamespace = "Application"

Ou en XML :

  1. <appnamespace>Application</appnamespace>

Par défaut, Zend_Tool va activer cette option avec la valeur "Application".

Alternativement, vous pouvez simplement définir la propriété $_appNamespace de votre classe de bootstrap avec la valeur appropriée :

  1. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  2. {
  3.     protected $_appNamespace = 'Application';
  4. }

Zend_Application_Resource_Resource

Zend_Application_Resource_Resource est une interface implémentée par les plugins de ressources lorsqu'ils sont utilisés par des classes de bootstrap implémentant Zend_Application_Bootstrap_ResourceBootstrapper. Les classes de plugins de ressources doivent accepter de la configuration, doivent pouvoir être lancées ("bootstrapées") et doivent utiliser un pattern strategy pour initialiser la ressource.

Méthodes de Zend_Application_Resource_Resource
Méthode Valeur de retour Paramètres Description
__construct($options = null) Void
  • $options: optionnel. Options d'initialisation.

Le constructeur doit posséder un paramètre permettant de configurer l'état de la ressource.

setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) Zend_Application_Resource_Resource
  • $bootstrap: requis. Bootstrap parent initialisant cette ressource.

Doit autoriser 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_Resource
  • $options: requis. Options de configuration de la ressource

Définit l'état d'initialisation de la ressource.

getOptions() Array N/A

Récupère les options enregistrées.

init() Mixed N/A

Pattern strategy: exécute l'initialisation de la ressource.

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 :

  1. $app = new Zend_Application(APPLICATION_ENV, array(
  2.     'pluginPaths' => array(
  3.         'My_Resource' => 'My/Resource/',
  4.     ),
  5.     'resources' => array(
  6.         // Si la classe suivante existe:
  7.         'My_Resource_View' => array(),
  8.  
  9.         // alors ceci est équivalent:
  10.         'View' => array(),
  11.     ),
  12. ));

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

  1. $bootstrap->bootstrap('view');
  2. $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 :

  1. $app = new Zend_Application(APPLICATION_ENV, array(
  2.     'resources' => array(
  3.         // Ceci va charger le plugin de ressource standard 'View':
  4.         'View' => array(),
  5.  
  6.         // Alors que ceci charge une classe spécifiquement via son nom:
  7.         'My_Resource_View' => array(),
  8.     ),
  9. ));

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

  1. $bootstrap->bootstrap('My_Resource_View');
  2. $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 :

  1. class My_Resource_View extends Zend_Application_Resource_ResourceAbstract
  2. {
  3.     public $_explicitType = 'My_View';
  4.  
  5.     public function init()
  6.     {
  7.         // du code ici...
  8.     }
  9. }

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

  1. $bootstrap->bootstrap('My_View');
  2. $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.


Exemples