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 () и выполнит необходимые шаги.