https://github.com/alex-oleshkevich/zf-annotations
Zend Framework configuration annotations
https://github.com/alex-oleshkevich/zf-annotations
Last synced: about 1 month ago
JSON representation
Zend Framework configuration annotations
- Host: GitHub
- URL: https://github.com/alex-oleshkevich/zf-annotations
- Owner: alex-oleshkevich
- License: mit
- Created: 2014-12-29T08:13:22.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-12-19T23:11:54.000Z (over 7 years ago)
- Last Synced: 2025-03-18T08:53:30.621Z (about 2 months ago)
- Language: PHP
- Homepage:
- Size: 133 KB
- Stars: 18
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
## Annotations for Zend Framework.
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.
[](https://packagist.org/packages/alex-oleshkevich/zf-annotations)
[](https://packagist.org/packages/alex-oleshkevich/zf-annotations)
[](https://packagist.org/packages/alex-oleshkevich/zf-annotations)
[](https://packagist.org/packages/alex-oleshkevich/zf-annotations)
[](https://packagist.org/packages/alex-oleshkevich/zf-annotations)
### Requirements
* PHP >= 7.0.0### Please, note
1. 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.2. Since version 2.3 the module does not use [zendframework/zend-code](https://github.com/zendframework/zend-code) as a backend and use [doctrine/annotations](https://github.com/doctrine/annotations) directly. See [doctrine documentation](http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference/annotations.html) for more details and options.
### Deprecations
1. Config option "annotations" deprecated in favor of "namespaces".### Installation
##### Require via composer```bash
composer require alex-oleshkevich/zf-annotations
```##### Enable it in application.config.php
```php
return array(
'modules' => array(
// other modules
'ZfAnnotation'
),
// other content
);
```#### Configuration:
```php
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
* [Router](docs/router.md)
* [Services](docs/services.md)### Read how to add own annotations
* [Custom annotations](docs/custom-annotations.md)### 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](https://akrabat.com/caching-your-zf2-merged-configuration/).