This module provides "configuration via annotation" support for Zend Framework.
Out of the box it allows to define routes, service and all the ServiceManager-based implementations (as controllers, view helpers, etc).
The goal of this project is to get rid of large configuration arrays in application configs.
- PHP >= 7.0.0
-
if you want to use Zend libraries from Zend Framework 2, use ~1.0 versions. Branch ~2.0 supports future versions of Zend Framework and may not be compatible with ZF 1.
-
Since version 2.3 the module does not use zendframework/zend-code as a backend and use doctrine/annotations directly. See doctrine documentation for more details and options.
- Config option "annotations" deprecated in favor of "namespaces".
composer require alex-oleshkevich/zf-annotations
return array(
'modules' => array(
// other modules
'ZfAnnotation'
),
// other content
);
array(
'zf_annotation' => array(
// in which modules to search annotated classes
'scan_modules' => array(),
// DEPRECATED AND REMOVED IN 2.3
// here listed all annotations supported by the module
// add your own here
'annotations' => array(
'ZfAnnotation\Annotation\Route',
// ...
),
/*
* IMPORTANT NOTE:
* The given directories should NOT be the directory where classes of the namespace are in,
* but the base directory of the root namespace. The AnnotationRegistry uses a namespace to directory separator
* approach to resolve the correct path.
*/
'namespaces' => array(
'My\Annotation' => '/path/to/annotations'
),
// listeners to events emitted by parser.
// they process class annotations and transforms them into config values
// add your own here.
'event_listeners' => array(
'ZfAnnotation\EventListener\RouteListener',
// ...
),
// if not null, supplied directory would used for cache to speed up parsing
'cache' => '/path/to/cache/dir',
// if true, will ignore cached data and always return a fresh one.
'cache_debug' => false
)
)
This module is pretty fast, but anyway, parsing of lots of files on each request takes time.
The module subscribes to ModuleEvent::EVENT_MERGE_CONFIG
and scans every time its is triggered. If you have option
module_listener_options.config_cache_enabled
enabled, annotation parser will not do parsing unless you set config_cache_enabled
to false or remove a cache file. More info about caching here.