Во всех современных фреймворках очень часто используются аннотации. В PHP аннотации реализуются через Reflection API .
Во всех современных фреймворках очень часто используются аннотации. В 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.
