Introduction to the Module System
The module system in ZF2 has been designed to be a generic and powerful foundation from which developers and other projects can build their own module or plugin systems. For a better understanding of the event-driven concepts behind the ZF2 module system, it may be helpful to read the EventManager documentation.
The module system is made up of the following:
- The Module Autoloader -
Zend\Loader\ModuleAutoloaderis a specialized autoloader that is responsible for the locating and loading of modules'
Moduleclasses from a variety of sources.
- The Module Manager -
Zend\ModuleManager\ModuleManagertakes an array of module names and fires a sequence of events for each one, allowing the behavior of the module system to be defined entirely by the listeners which are attached to the module manager.
- ModuleManager Listeners - Event listeners can be attached to the module manager's various events. These listeners can do everything from resolving and loading modules to performing complex initialization tasks and introspection into each returned module object.
Modules are PHP namespaces
The name of a module in a Zend Framework application is a PHP namespace, and must follow all of the same rules for naming.
The recommended structure for an MVC-oriented ZF2 module is as follows:
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>
The autoload_*.php Files
autoload_*.php files are not required, but recommended. They provide the following:
autoload_classmap.phpshould return an array classmap of class name/filename pairs (with the filenames resolved via the
autoload_function.phpshould return a PHP callback that can be passed to
spl_autoload_register(). Typically, this callback should utilize the map returned by
autoload_register.phpshould register a PHP callback (typically that returned by
The purpose of these three files is to provide reasonable default mechanisms for autoloading the classes contained in the module, thus providing a trivial way to consume the module without requiring zend-modulemanager` (e.g., for use outside a ZF2 application).