Chargeur de PluginsZend Framework vous propose l'utilisation de composants "pluggables", que vous créez vous même. Ceux-ci ne sont pas forcément dans l'include_path. De même, ils ne suivent pas forcément les mêmes règles de nommage que les composants de Zend Framework.Zend_Loader_PluginLoader propose une solution à ce problème.
Utilisation basiqueMême si nous parlons de "plugins", ce n'est pas réservé aux plugins de contrôleur frontal, mais bien à toute classe étant utilisée avec Zend Framework. Imaginons une structure de répertoires comme suit, dans laquelle les dossiers "application" et "library" sont dans l'include_path :
Maintenant créons un chargeur de plugins pour utiliser les différentes classes d'aides de vue :
Il devient alors possible de charger une aide de vue en spécifiant juste le nom de sa classe :
Une fois chargée, la classe devient instanciable.
Zend_Loader_PluginLoader peut aussi permettre de partager des plugins grâce au registre. Indiquez le nom du registre de cette manière :
Si un autre composant instancie le Manipulation des chemins des PluginsPour afficher ou supprimer des chemins déjà enregistrés, utilisez l'une des méthodes suivantes :
Test des Plugins et récupération des noms de classeLorsque vous voulez savoir si une classe de plugin a été chargée, isLoaded() prend en paramètre le nom du plugin, et retourne sont statut.
Une autre utilisation de
Obtenir de meilleures performances avec les PluginsLe chargement des plugins peut être une opération consommatrice en ressources. En interne, il doit parcourir chaque préfixe, ainsi que chaque chemin dans ce préfixe jusqu'à ce qu'il trouve un fichier qui correspond - et qui définit de plus la classe voulue. Dans le cas où le fichier existe mais ne défini pas la classe, une erreur sera ajouté à la pile d'erreur PHP, opération qui est elle aussi consommatrice. La question qui vient à l'esprit est : comment maintenir la flexibilité des plugins et la performance ? Zend_Loader_PluginLoader offre une fonctionnalité intégrée pour ce cas, un fichier de cache des inclusions de classe. Quand il est activé, ceci crée un fichier qui contient toutes les inclusions qui ont fonctionnées et qui peuvent donc être appelées dans votre fichier d'initialisation. En utilisant ceci, vous pouvez considérablement accroître les performances de vos serveurs de production. Example #1 Utilisation du fichier de cache des inclusions de classe de PluginLoader Pour utiliser le fichier de cache des inclusions de classe, collez simplement le code suivant dans votre fichier d'initialisation :
Évidemment, le chemin et le fichier varieront en fonction de vos besoins. Ce code doit intervenir aussi vite que possible, pour s'assurer que tous les composants à base de plugins pourront l'utiliser. En cours du développement, vous pouvez souhaiter désactiver le cache. Une méthode permettant ceci est d'utiliser une clé de configuration pour déterminer ou non si le chargeur de plugins doit mettre les informations en cache.
Cette technique vous permet de restreindre les modifications au seul fichier de configuration plutôt que dans votre code.
|