Я использую библиотеку аннотаций Doctrine (не вся Doctrine, только аннотации) и хочу создать собственный класс аннотаций.
composer.json:
{
"require": {
"doctrine/annotations": "^1.6"
},
"autoload": {
"psr-4": {
"annotations\\": "annotations",
"entities\\": "entities"
}
}
}
index.php:
<?php
require 'vendor/autoload.php';
use Doctrine\Common\Annotations\AnnotationReader;
$annotationReader = new AnnotationReader();
$reflectionClass = new ReflectionClass(entities\MyClass::class);
$classAnnotations = $annotationReader->getClassAnnotations($reflectionClass);
var_dump($classAnnotations);
лица / MyClass.php
<?php
namespace entities;
use annotations\TestAnnotation;
/**
* @TestAnnotation("123")
*/
class MyClass
{
}
аннотации / TestAnnotation.php
<?php
namespace annotations;
/**
* @Annotation
* @Target("CLASS")
*/
final class TestAnnotation
{
/**
* @var string
*/
public $value;
}
Это дает мне следующую ошибку:
[Semantical Error] The annotation "@annotations\TestAnnotation" in class entities\MyClass does not exist, or could not be auto-loaded.
Единственное решение, которое я нашел в Интернете, - это использовать AnnotationRegistry :: registerLoader или что-то подобное, но оно устарело, поэтому я хотел бы решить проблему другим способом.