Zend Framework - Sistema de Módulo

O Zend Framework fornece um sistema de módulo poderoso. O sistema de módulos possui três componentes. Eles são os seguintes -

  • Module Autoloader- Um Módulo Autoloader é responsável por localizar e carregar módulos de várias fontes. Ele pode carregar módulos empacotados comoPhar archivestambém. A implementação do Módulo Autoloader está localizada em myapp / vendor / zendframework / zend-loader / src / ModuleAutoloader.php.

  • Module Manager- Uma vez que o Módulo Autoloader localiza os módulos, o gerenciador de módulo dispara uma sequência de eventos para cada módulo. A implementação do Gerenciador de Módulo está localizada em myapp / vendor / zendframework / zendmodulemanager / src / ModuleManager.php.

  • Module Manager Listeners- Eles podem ser anexados aos eventos disparados pelo Gerenciador de Módulos. Ao anexar aos eventos do gerenciador de módulo, eles podem fazer tudo, desde resolver e carregar módulos até a realização de trabalhos complexos para cada módulo.

Sistema de Módulo Web MVC

O MVC Web Application no Zend Framework geralmente é escrito como Módulos. Um único site pode conter um ou mais módulos agrupados por funcionalidade. A estrutura recomendada para o módulo orientado a MVC é a seguinte -

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>

A estrutura é a mesma discutida no capítulo anterior, mas aqui é genérica. oautoload_ files pode ser usado como um mecanismo padrão para carregar automaticamente as classes disponíveis no módulo sem usar o avançado Module Manager disponível no zend-modulemanager.

  • autoload_classmap.php - Retorna uma matriz de nome de classe e seu nome de arquivo correspondente.

  • autoload_function.php- Retorna um retorno de chamada PHP. Isso pode utilizar classes retornadas por autoload_classmap.php.

  • autoload_register.php - Registra o retorno de chamada do PHP que é retornado pelo autoload_function.php.

Esses arquivos de carregamento automático não são necessários, mas recomendados. No aplicativo de esqueleto, não usamos oautoload_ files.

Classe de Módulo

A classe do módulo deve ser nomeada Module e o namespace da classe do módulo deve ser Module name. Isso ajudará o Zend Framework a resolver e carregar o módulo facilmente. oApplication o código do módulo no aplicativo esqueleto (myapp), myapp / module / Application / src / Module.php é o seguinte -

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

O gerenciador de módulo Zend Framework irá chamar o getConfig() funcionará automaticamente e fará as etapas necessárias.