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 |
|
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 |
|
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, 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 |
|
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 |
|
Constructeur. Accepte un argument qui peut être une instance de
Zend_Application ou un autre objet bootstrap.
|
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 $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
|
|
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
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 |
|
Constructeur. Accepte un seul argument de type
Zend_Application, ou un autre objet bootstrap.
|
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 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 |
|
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 NULL si aucune
option n'est enregistrée avec cette clé.
|
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
getContainer() et
setContainer().) Cette méthode interroge le
conteneur pour savoir si une ressource y est présente.
|
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
getContainer() et
setContainer().) Cette méthode récupère une
ressource depuis le conteneur.
|
bootstrap($resource = null) |
Mixed |
|
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 |
|
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 :
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
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 |
|
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
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 |
|
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. |
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(
'My_Resource' => 'My/Resource/',
),
// Si la classe suivante existe:
'My_Resource_View' => array(),
// alors ceci est équivalent:
),
));
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(
// Ceci va charger le plugin de ressource standard 'View':
// 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.
|
|