phramz/doctrine-annotation-scanner 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

phramz/doctrine-annotation-scanner

最新稳定版本:v1.0.1

Composer 安装命令:

composer require phramz/doctrine-annotation-scanner

包简介

library to scan files and folders for annotated classes using doctrine annotations

README 文档

README

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

"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 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 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 documentation.

<?php use Phramz\Doctrine\Annotation\Scanner\Finder; use Doctrine\Common\Annotations\AnnotationReader; $reader = new AnnotationReader(); // get an instance of the doctrine annotation reader $finder = new Finder(); $finder->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 use Phramz\Doctrine\Annotation\Scanner\Scanner; use Doctrine\Common\Annotations\AnnotationReader; $reader = new AnnotationReader(); // get an instance of the doctrine annotation reader $scanner = new Scanner($reader); $scanner->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

统计信息

  • 总下载量: 133.85k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 15
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 14
  • Watchers: 1
  • Forks: 5
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固