Zend Framework - Sistema di moduli

Zend Framework fornisce un potente sistema di moduli. Il sistema del modulo ha tre componenti. Sono i seguenti:

  • Module Autoloader- Un caricatore automatico di moduli è responsabile della localizzazione e del caricamento dei moduli da varie fonti. Può caricare moduli confezionati comePhar archivesanche. L'implementazione del Module Autoloader si trova in myapp / vendor / zendframework / zend-loader / src / ModuleAutoloader.php.

  • Module Manager- Una volta che il caricatore automatico del modulo individua i moduli, il gestore del modulo attiva una sequenza di eventi per ogni modulo. L'implementazione del Module Manager si trova in myapp / vendor / zendframework / zendmodulemanager / src / ModuleManager.php.

  • Module Manager Listeners- Possono essere allegati agli eventi attivati ​​dal Module Manager. Collegandosi agli eventi del gestore dei moduli, possono fare di tutto, dalla risoluzione e il caricamento dei moduli all'esecuzione di lavori complessi per ogni modulo.

MVC Web Module System

L'applicazione Web MVC in Zend Framework è solitamente scritta come moduli. Un singolo sito Web può contenere uno o più moduli raggruppati per funzionalità. La struttura consigliata per il modulo MVC-Oriented è la seguente:

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 struttura è la stessa discussa nel capitolo precedente, ma qui è generica. Ilautoload_ files può essere utilizzato come meccanismo predefinito per il caricamento automatico delle classi disponibili nel modulo senza utilizzare advanced Module Manager disponibile in zend-modulemanager.

  • autoload_classmap.php - Restituisce un array del nome della classe e il nome del file corrispondente.

  • autoload_function.php- Restituisce una richiamata PHP. Questo può utilizzare le classi restituite da autoload_classmap.php.

  • autoload_register.php - Registra il callback PHP restituito da autoload_function.php.

Questi file di caricamento automatico non sono necessari ma consigliati. Nell'applicazione scheletro, non abbiamo utilizzato l'estensioneautoload_ files.

Classe del modulo

La classe Module dovrebbe essere denominata Module e lo spazio dei nomi della classe del modulo dovrebbe essere Module name. Ciò aiuterà Zend Framework a risolvere e caricare facilmente il modulo. IlApplication il codice del modulo nell'applicazione skeleton (myapp), myapp / module / Application / src / Module.php è il seguente:

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

Il gestore del modulo Zend Framework chiamerà il file getConfig() funziona automaticamente e farà i passaggi necessari.