Во всех современных фреймворках очень часто используются аннотации. В PHP аннотации реализуются через Reflection API .

Работа с аннотациями в PHP

Во всех современных фреймворках очень часто используются аннотации. В PHP аннотации реализуются через Reflection API.

Вот пример того, как аннотация используется в контроллерах:


/**
* @Folder('src/Controllers')
* @Type('Controller')
*
*/
class PageController extends Controller
{
    
    /**
    * @Route('/')
    *
    */
    public function actionIndex() : Response
    {
        return new Response('Главная страница');
    }
    
    
    /**
    * @Route('/contacts/')
    *
    */
    public function actionContacts() : Response
    {
        return new Response('Наши контакты');
    }
    
    
    /**
    * @Route('/article/(\d+)')
    *
    */
    public function actionArticle(int $id) : Response
    {
        return new Response('Наши контакты');
    }

}

Как видно, аннотации в PHP обозначаются как в примере выше: сначала идет знак @, а затем название аннотации.

Получить эти аннотации для дальнейшей обработки можно с помощью Reflection API. Пример скрипта ниже:

$ref = new ReflectionClass(PageController::class);

// получаем комментарии к классу
print $class_comments = $ref -> getDocComment();

// получаем комментарии к методу
$method_comments = $ref -> getMethod('actionContacts') -> getDocComment();
print $method_comments;

// регулярное выражение для получения аннотации
// в зависимости от вашего типа аннотации, оно можеть быть разным
$pattern = "##";

// получаем все аннотации для класса
preg_match_all($pattern,$method_comments, $matches)

print_r($matches);

Вот так можно вытащить документированные комментарии к классу или методу в PHP.