Zend Framework - Sistema de módulos

Zend Framework proporciona un potente sistema de módulos. El sistema de módulos tiene tres componentes. Son los siguientes:

  • Module Autoloader- Un autocargador de módulos es responsable de ubicar y cargar módulos de una variedad de fuentes. Puede cargar módulos empaquetados comoPhar archivestambién. La implementación del autocargador de módulos se encuentra en myapp / vendor / zendframework / zend-loader / src / ModuleAutoloader.php.

  • Module Manager- Una vez que el autocargador de módulos localiza los módulos, el administrador de módulos dispara una secuencia de eventos para cada módulo. La implementación del Administrador de módulos se encuentra en myapp / vendor / zendframework / zendmodulemanager / src / ModuleManager.php.

  • Module Manager Listeners- Se pueden adjuntar a los eventos disparados por el Administrador de módulos. Al adjuntar a los eventos del administrador de módulos, pueden hacer de todo, desde resolver y cargar módulos hasta realizar un trabajo complejo para cada módulo.

Sistema de módulo web MVC

La aplicación web MVC en Zend Framework generalmente se escribe como módulos. Un solo sitio web puede contener uno o más módulos agrupados por funcionalidad. La estructura recomendada para el módulo orientado a MVC es la siguiente:

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 estructura es la misma que se discutió en el capítulo anterior, pero aquí es genérica. losautoload_ files se puede usar como un mecanismo predeterminado para cargar automáticamente las clases disponibles en el módulo sin usar el avanzado Module Manager disponible en el zend-modulemanager.

  • autoload_classmap.php - Devuelve una matriz de nombre de clase y su nombre de archivo correspondiente.

  • autoload_function.php- Devuelve una devolución de llamada de PHP. Esto puede utilizar clases devueltas por autoload_classmap.php.

  • autoload_register.php - Registra la devolución de llamada de PHP que es devuelta por autoload_function.php.

Estos archivos de carga automática no son necesarios, pero se recomiendan. En la aplicación de esqueleto, no hemos utilizado elautoload_ files.

Clase de módulo

La clase Module debe llamarse Module y el espacio de nombres de la clase del módulo debe ser Module name. Esto ayudará a Zend Framework a resolver y cargar el módulo fácilmente. losApplication El código del módulo en la aplicación esqueleto (myapp), myapp / module / Application / src / Module.php es el siguiente:

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

El administrador del módulo Zend Framework llamará al getConfig() funcionará automáticamente y realizará los pasos necesarios.