| 
| Size: | 12900 | 
| Storage flags: | no_autoload,compress/gzip (31%) | 
Zend Framework 2.0 introduces a new and powerful approach to modules. This new module system is designed with flexibility, simplicity, and re-usability in mind. A module may contain just about anything: PHP code, including MVC functionality; library code; view scripts; and/or public assets such as images, CSS, and JavaScript. The possibilities are endless.
Note
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:
Note
The name of a module in a typical Zend Framework 2 application is simply a PHP namespace and must follow all of the same rules for naming.
The recommended structure of a typical 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 three autoload_*.php files are not required, but recommended. They provide the following:
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).
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.