Zend Framework - Système de modules

Le Zend Framework fournit un système de modules puissant. Le système de modules comprend trois composants. Ils sont les suivants -

  • Module Autoloader- Un module autochargeur est responsable de la localisation et du chargement des modules à partir de diverses sources. Il peut charger des modules emballés commePhar archivesainsi que. L'implémentation du module Autoloader se trouve dans myapp / vendor / zendframework / zend-loader / src / ModuleAutoloader.php.

  • Module Manager- Une fois que l'autochargeur de modules a localisé les modules, le gestionnaire de modules déclenche une séquence d'événements pour chaque module. L'implémentation du module Manager se trouve dans myapp / vendor / zendframework / zendmodulemanager / src / ModuleManager.php.

  • Module Manager Listeners- Ils peuvent être attachés aux événements déclenchés par le gestionnaire de module. En s'attachant aux événements du gestionnaire de modules, ils peuvent tout faire, de la résolution et du chargement des modules à l'exécution de travaux complexes pour chaque module.

Système de module Web MVC

L'application Web MVC dans Zend Framework est généralement écrite sous forme de modules. Un seul site Web peut contenir un ou plusieurs modules regroupés par fonctionnalité. La structure recommandée pour le module orienté MVC est la suivante -

module_root/ 
   Module.php 
   autoload_classmap.php 
   autoload_function.php 
   autoload_register.php 
   config/ 
      module.config.php 
   public/ 
      images/ 
      css/ 
      js/ 
   src/ 
      <module_namespace>/ 
      <code files> 
   test/ 
      phpunit.xml
      bootstrap.php 
      <module_namespace>/ 
         <test code files> 
   view/ 
      <dir-named-after-module-namespace>/ 
         <dir-named-after-a-controller>/ 
            <.phtml files>

La structure est la même que celle décrite dans le chapitre précédent, mais ici elle est générique. leautoload_ files peut être utilisé comme mécanisme par défaut pour le chargement automatique des classes disponibles dans le module sans utiliser le module avancé Module Manager disponible dans le zend-modulemanager.

  • autoload_classmap.php - Renvoie un tableau de nom de classe et son nom de fichier correspondant.

  • autoload_function.php- Renvoie un rappel PHP. Cela peut utiliser les classes renvoyées par autoload_classmap.php.

  • autoload_register.php - Enregistre le rappel PHP renvoyé par le fichier autoload_function.php.

Ces fichiers à chargement automatique ne sont pas obligatoires mais recommandés. Dans l'application squelette, nous n'avons pas utilisé leautoload_ files.

Classe de module

La classe Module doit être nommée Module et l'espace de noms de la classe de module doit être Module name. Cela aidera le Zend Framework à résoudre et à charger facilement le module. leApplication code de module dans l'application squelette (myapp), myapp / module / Application / src / Module.php est le suivant -

namespace Application; 
class Module { 
   const VERSION = '3.0.2dev'; 
   public function getConfig() { 
      return include __DIR__ . '/../config/module.config.php'; 
   } 
}

Le gestionnaire de module Zend Framework appellera le getConfig() fonctionnera automatiquement et effectuera les étapes nécessaires.