Введение в систему модулей (Module System)
Zend Framework 2.0 представляет новый и мощный подход к модулям. Новая модульная система разработана для обеспечения максимальной гибкости, простоты и легкого повторного использования. Модуль может содержать все, что Вам необходимо: PHP код, MVC функционал, библиотеки, скрипты видов, шаблоны, «public» информацию, такую как картинки, таблицы стилей, javaScript. Возможности просто безграничны!
Важно: Модульная структура ZF2 разработана таким образом, что бы предоставить разработичкам возможность создавать фундамент для своих приложений, свои собственные модули а так же новые модули, базирующиеся на уже написанных модулях.
Для лучшего понимания модульной структуры, возможно, для начала лучше почитать про EventManager.
Модульная система состоит из следующих компонент:
1) ModuleAutoloader - Zend\Loader\ModuleAutoloader автозагрузчик, который отвечает за размещение и загрузку классов модулей «Module» из различных источников.
2) ModuleManager - ZendModuleManager\ModuleManagerпросто принимает массив имен модулей и цепочки последовательностей для каждого из них. Поведение модуля должно описываться исключительно с помощью слушателей, которые прикреплены к ModuleManager.
3) ModuleManagerListeners– Слушатели событий могут быть прикреплены к различным событиям ModuleManager. Они способны выполнять любые действия: от загрузки модуля до выполнения различных задач инициализации различных компонентов и самоанализа .
Важно: Имя модуля в Zend Framework 2 приложении должно
совпадать с именем пространства имен (namespace) соответствующего модуля.
Рекомендуемая структура стандартного MVC-ориентированного модуля ZF2 выглядит следующим образом:
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>
1) autoload_classmap.php должен возвращать массив карты классов (classmap) парами имя(name)/filename(имя файла). Имя файла должно быть указано с помощью магической константы __DIR__.
2) autoload_function.php должен возвращать функцию обратного вызова, которая должна быть передана в spl_autoload_register(). Как правило, это функция использует карту возвращенную из autoload_classmap.php.
3) autoload_register.php должен регистрировать функции обратного вызова (callback). Обычно это возвращаемое значение из autoload_function.php
Эти три файла предназначены для обеспечения нормальной загрузки классов, находящихся в модуле без необходимости использования Zend\ModuleManager. Например, при использовании вне приложения ZF2.