我正在尝试使用 Doctrine Common 来创建自己的注释。http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference/annotations.html与https://github.com/doctrine/common不匹配,因为Call to undefined method Doctrine\\Common\\Annotations\\AnnotationReader::setDefaultAnnotationNamespace
和PHP Fatal error: Call to undefined method Doctrine\\Common\\Annotations\\AnnotationRegistry::registerAnnotationNamespace
. 我检查了来源,他们不在那里。根据 git log 他们在一年前被删除。
我有一个 PSR-0 自动加载器(来自 Symfony)。所以我有一个 PSR-0 加载程序期望的文件:
namespace My\Test;
/**
* @Annotation
*/
class Foo {
}
另一个班级
namespace My\Annotated
/**
* @My\Test\Foo
*/
class Test {
}
读者:
namespace My\Reader
use ReflectionClass;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Annotations\AnnotationRegistry;
use My\Test\Foo;
$reader = new AnnotationReader();
$reflectionClass = new ReflectionClass('My\\Annotated\\Test');
$classAnnotations = $reader->getClassAnnotations($reflectionClass);
var_dump($classAnnotations);
Gets:"[Semantical Error] The annotation "@My\\Test\\Foo" in class My\\Annotated\\test was never imported. Did you maybe forget to add a "use" statement for this annotation?"
我很可能会这样做,但对于我的生活,我无法弄清楚在哪里添加它。如果可能的话,我真的很想使用@Foo。