Ici vous trouverez une documentation type API concernant les
composants coeurs de 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.
Tableau 2. Zend_Application options
Option | Description |
---|---|
phpSettings |
Tableau de paramètres |
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
|
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. |
Noms des options
Notez que les noms des options ne sont pas sensibles à la casse.
Tableau 3. Méthodes dans Zend_Application
Méthode | Valeur de retour | Paramètres | Description |
---|---|---|---|
__construct($environment, $options = null)
|
Void |
|
Une instance de |
getEnvironment() |
String | N/A | Récupère l'environnement passé au constructeur. |
getAutoloader() |
Zend_Loader_Autoloader |
N/A |
Récupère l'objet |
setOptions(array $options) |
Zend_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 à
|
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
|
hasOption($key) |
Boolean |
|
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 |
|
Récupère l'option correspondant à la clé passée, |
setPhpSettings(array $settings, $prefix = '')
|
Zend_Application |
|
Affecte à la volée des paramètres de |
setAutoloaderNamespaces(array $namespaces)
|
Zend_Application |
|
Enregistre des espaces de noms dans
|
setBootstrap($path, $class = null) |
Zend_Application |
|
|
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 |
run() |
Void | N/A |
Appelle la méthode |
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.
Tableau 4. Méthodes de Zend_Application_Bootstrap_Bootstrapper
Méthode | Valeur de retour | Paramètres | Description |
---|---|---|---|
__construct($application) |
Void |
|
Constructeur. Accepte un argument qui peut être une instance de
|
setOptions(array $options) |
Zend_Application_Bootstrap_Bootstrapper |
|
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 |
|
Si |
run() |
Void | N/A | Définit la logique à lancer après avoir lancé le bootstrap. |
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.
Tableau 5. Méthodes de Zend_Application_Bootstrap_ResourceBootstrapper
Méthode | Valeur de retour | Paramètres | Description |
---|---|---|---|
registerPluginResource($resource, $options = null)
|
Zend_Application_Bootstrap_ResourceBootstrapper
|
|
Enregistre une ressource avec la classe, ajoutant une configuration optionnelle à fournir à la ressource. |
unregisterPluginResource($resource) |
Zend_Application_Bootstrap_ResourceBootstrapper
|
|
Supprime un plugin de ressource de la classe. |
hasPluginResource($resource) |
Boolean |
|
Détermine si une ressource donnée a été enregistrée. |
getPluginResource($resource) |
Zend_Application_Resource_Resource |
|
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
|
|
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
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
.
Tableau 6. Méthodes de Zend_Application_Bootstrap_BootstrapAbstract
Méthode | Valeur de retour | Paramètres | Description |
---|---|---|---|
__construct($application) |
Void |
|
Constructeur. Accepte un seul argument de type
|
setOptions(array $options) |
Zend_Application_Bootstrap_Bootstrapper |
|
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 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
|
hasOption($key) |
Boolean |
|
Détermine si une option est présente. |
getOption($key) |
Mixed |
|
Récupère la valeur de l'option associée à la clé passée comme
paramètre retourne |
setApplication(Zend_Application |
Zend_Application_Bootstrap_Bootstrapper $application)
|
Zend_Application_Bootstrap_BootstrapAbstract
|
|
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
|
|
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 |
|
Lorsqu'une ressource est demandée (retournée par une méthode ou un plugin),
elle est stockée dans un objet conteneur (voyez
|
getResource($name) |
Mixed |
|
Lorsqu'une ressource est demandée (retournée par une méthode ou un plugin),
elle est stockée dans un objet conteneur (voyez
|
bootstrap($resource = null) |
Mixed |
|
Si 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 |
|
Propose une interface agréable pour configurer (bootstrap)
des ressources individuelles en appelant
'bootstrap<NomDeLaRessource>()' à la place de
|
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.
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 ressources 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 :
appnamespace = "Application"
Ou en XML :
<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 :
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected $_appNamespace = 'Application'; }
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 Stratégie pour initialiser la ressource.
Tableau 7. Méthodes de Zend_Application_Resource_Resource
Méthode | Valeur de retour | Paramètres | Description |
---|---|---|---|
__construct($options = null) |
Void |
|
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 |
|
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 |
|
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
est une classe abstraite
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.
Tableau 8. Méthodes de Zend_Application_Resource_ResourceAbstract
Méthode | Valeur de retour | Paramètres | Description |
---|---|---|---|
__construct($options = null) |
Void |
|
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 |
|
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 |
|
Définit l'état de la ressource. |
getOptions() |
Array | N/A | Retourne les options enregistrées. |
Lorsque 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éjà 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.