alex-oleshkevich / zf-annotations
ZF2 module for annotated configuration.
Installs: 34 645
Dependents: 2
Suggesters: 0
Security: 0
Stars: 18
Watchers: 4
Forks: 5
Open Issues: 1
Requires
- php: >=7.0.0
- alex-oleshkevich/classnames: ^1.0
- doctrine/annotations: ^1.2
- doctrine/common: ^2.6 || ~3.0
- zendframework/zend-eventmanager: ^2.6 || ~3.0
- zendframework/zend-filter: ~2.5 || ~3.0
- zendframework/zend-modulemanager: ~2.6 || ~3.0
- zendframework/zend-mvc: ^2.6 | ^3.0
- zendframework/zend-servicemanager: ^2.6 || ~3.0
Requires (Dev)
README
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.
Requirements
- PHP >= 7.0.0
Please, note
-
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.
Deprecations
- Config option "annotations" deprecated in favor of "namespaces".
Installation
Require via composer
composer require alex-oleshkevich/zf-annotations
Enable it in application.config.php
return array( 'modules' => array( // other modules 'ZfAnnotation' ), // other content );
Configuration:
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 ) )
Components
Read how to add own annotations
Performance
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.