public
Created

Proposal for support ignore annotation with wildcard for Doctrine

  • Download Gist
gistfile1.aw
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
namespace MyCompany\Annotations {
/**
* @Annotation
*/
class Foo
{
public $bar;
}
 
/**
* @Annotation
*/
class Bar
{
public $foo;
}
}
 
namespace {
/**
* @MyCompany\Annotations\Foo(bar="bar")
* @MyCompany\Annotations\Bar(foo="foo")
* @ZF2\Form
*/
class User
{ }
 
require_once '/home/enrico/Lavoro/Git/doctrine-common/lib/Doctrine/Common/ClassLoader.php';
 
$loader = new \Doctrine\Common\ClassLoader("Doctrine", '/home/enrico/Lavoro/Git/doctrine-common/lib');
$loader->register();
 
use Doctrine\Common\Annotations\AnnotationReader;
 
$reader = new AnnotationReader();
AnnotationReader::addGlobalIgnoredName('ZF2\\*');
 
$reflClass = new ReflectionClass('User');
$classAnnotations = $reader->getClassAnnotations($reflClass);
var_dump($classAnnotations);
foreach ($classAnnotations AS $annot) {
if ($annot instanceof \MyCompany\Annotations\Foo) {
echo "Bar: {$annot->bar} \n"; // prints "foo";
} else if ($annot instanceof \MyCompany\Annotations\Bar) {
echo "Foo: {$annot->foo} \n"; // prints "bar";
}
}
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.