Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/phramz/doctrine-annotation-scanner
library to scan files and folders for annotated classes using doctrine annotations
https://github.com/phramz/doctrine-annotation-scanner
Last synced: 13 days ago
JSON representation
library to scan files and folders for annotated classes using doctrine annotations
- Host: GitHub
- URL: https://github.com/phramz/doctrine-annotation-scanner
- Owner: phramz
- License: mit
- Created: 2013-10-23T18:19:12.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2016-06-26T10:18:54.000Z (over 8 years ago)
- Last Synced: 2024-09-26T15:37:37.374Z (about 2 months ago)
- Language: PHP
- Size: 26.4 KB
- Stars: 14
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Annotation Scanner [![Build Status](https://travis-ci.org/phramz/doctrine-annotation-scanner.png?branch=master)](https://travis-ci.org/phramz/doctrine-annotation-scanner)
Annotation Scanner is a library to scan files and folders for annotated classes using doctrine annotations.
Install
------It's easy if you use composer!
edit your `composer.json`
``` json
"require": {
"phramz/doctrine-annotation-scanner": "dev-master"
}
```or via command line
```
php composer.phar require phramz/doctrine-annotation-scanner
```License
-------This library is licensed under the MIT license. For further information see LICENSE file.
Known limitations
------Your code has to meet the following conditions to make this library work properly:
- Follow the [PSR-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) conventions.
- One classfile contains exactly one class.
- The classfile is named after the class it contains plus `.php` suffix.
- Since this library won't do any autoloading stuff its up to you to ensure that all
classes are autoloaded or manually loaded (e.g. by using `require_once`).
- Make sure that you registered your custom annotations via the `AnnotationRegistry`.
See [Doctrine Common](http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference/annotations.html#registering-annotations) documentation for details.Examples
------The library offers two different ways to find annotated classfiles:
- If your just interested to find out which files contain annotated classes
you can take advantage of the `Finder`
- If you need to find the classfiles but want to access the concrete annotations as well
the `Scanner` is your friend.Now, have a look at the following examples ...
### Finder
The following example will find any classfile under `/tests` that contains either `@Foo` or `@Bar` annotations in
property, method or class-docblocks.
You can access the search result by iterating over the `Finder` instance. For each classfile you'll get an instance of
`Symfony\Component\Finder\SplFileInfo`.
For more information about the `Finder` have a look at the [Symfony2 Finder](http://symfony.com/doc/current/components/finder.html) documentation.``` php
containsAtLeastOneOf('Phramz\Doctrine\Annotation\Fixtures\Annotations\Foo')
->containsAtLeastOneOf('Phramz\Doctrine\Annotation\Fixtures\Annotations\Bar')
->setReader($reader)
->in('/tests');/** @var Symfony\Component\Finder\SplFileInfo $file */
foreach ($finder as $file) {
echo "Found: " . $file->getFilename(); // will output for example "Found: AnnotatedClass.php"
}
```### Scanner
The following example will find any classfile under `/tests` that contains either `@Foo` or `@Bar` annotations in
property, method or class-docblocks.
You can access the search result by iterating over the `Scanner` instance. For each classfile you'll get an instance of
`Phramz\Doctrine\Annotation\Scanner\ClassFileInfo` which inherits from `Symfony\Component\Finder\SplFileInfo` but
additionally offers access to the annotations of the class.``` php
scan(array(
'Phramz\Doctrine\Annotation\Fixtures\Annotations\Foo',
'Phramz\Doctrine\Annotation\Fixtures\Annotations\Bar'
))
->in('/tests');/** @var Phramz\Doctrine\Annotation\Scanner\ClassFileInfo $file */
foreach ($scanner as $file) {
echo "Found: " . $file->getFilename(); // will output for example "Found: AnnotatedClass.php"
echo "Class: " . $file->getClassName(); // will output for example
// "Class: Phramz\Annotation\AnnotatedClass"
print_r($file->getClassAnnotations()); // will give you an array of all annotations
// in the class-docblock
print_r($file->getMethodAnnotations()); // will give you an array of all methods and
// annotationss in the method-docblocks
print_r($file->getPropertyAnnotations()); // will give you an array of all properties and
// annotation in the method-docblocks
}
```Further readings
------- http://symfony.com/doc/current/components/finder.html
- http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference/annotations.html