Учебники

Zend Framework — модульная система

Zend Framework предоставляет мощную модульную систему. Модульная система состоит из трех компонентов. Они заключаются в следующем —

  • Модульный автозагрузчик — Модульный автозагрузчик отвечает за поиск и загрузку модулей из различных источников. Он также может загружать модули, упакованные как Phar-архивы . Реализация модуля автозагрузчика находится по адресу myapp / vendor / zendframework / zend-loader / src / ModuleAutoloader.php.

  • Диспетчер модулей — как только модуль автозагрузки обнаружит модули, диспетчер модулей запускает последовательность событий для каждого модуля. Реализация менеджера модулей находится по адресу myapp / vendor / zendframework / zendmodulemanager / src / ModuleManager.php.

  • Слушатели диспетчера модулей — их можно прикрепить к событиям, запускаемым диспетчером модулей. Присоединяясь к событиям менеджера модулей, они могут делать все от разрешения и загрузки модулей до выполнения сложной работы для каждого модуля.

Модульный автозагрузчик — Модульный автозагрузчик отвечает за поиск и загрузку модулей из различных источников. Он также может загружать модули, упакованные как Phar-архивы . Реализация модуля автозагрузчика находится по адресу myapp / vendor / zendframework / zend-loader / src / ModuleAutoloader.php.

Диспетчер модулей — как только модуль автозагрузки обнаружит модули, диспетчер модулей запускает последовательность событий для каждого модуля. Реализация менеджера модулей находится по адресу myapp / vendor / zendframework / zendmodulemanager / src / ModuleManager.php.

Слушатели диспетчера модулей — их можно прикрепить к событиям, запускаемым диспетчером модулей. Присоединяясь к событиям менеджера модулей, они могут делать все от разрешения и загрузки модулей до выполнения сложной работы для каждого модуля.

MVC Web Module System

Веб-приложение MVC в Zend Framework обычно пишется в виде модулей. Один веб-сайт может содержать один или несколько модулей, сгруппированных по функциональности. Рекомендуемая структура для MVC-ориентированного модуля выглядит следующим образом:

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>

Структура такая же, как обсуждалось в предыдущей главе, но здесь она является общей. Файлы autoload_ могут использоваться в качестве механизма по умолчанию для автозагрузки классов, доступных в модуле, без использования расширенного менеджера модулей, доступного в zend-modulemanager .

  • autoload_classmap.php — возвращает массив имени класса и соответствующего имени файла.

  • autoload_function.php — возвращает обратный вызов PHP. Это может использовать классы, возвращаемые autoload_classmap.php.

  • autoload_register.php — регистрирует обратный вызов PHP, который возвращается autoload_function.php.

autoload_classmap.php — возвращает массив имени класса и соответствующего имени файла.

autoload_function.php — возвращает обратный вызов PHP. Это может использовать классы, возвращаемые autoload_classmap.php.

autoload_register.php — регистрирует обратный вызов PHP, который возвращается autoload_function.php.

Эти файлы автозагрузки не обязательны, но рекомендуются. В скелетном приложении мы не использовали файлы autoload_ .

Модульный класс

Класс модуля должен называться модулем, а пространство имен класса модуля должно быть именем модуля . Это поможет Zend Framework легко разрешить и загрузить модуль. Код модуля приложения в скелетном (myapp) приложении myapp / module / Application / src / Module.php выглядит следующим образом:

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

Менеджер модулей Zend Framework автоматически вызовет функцию getConfig () и выполнит необходимые шаги.