Одним из крутых инструменов фрэймворка Symfony 2 является возможность конфигурировать свое приложение посредством аннотаций. Изначально аннотации использовались в Doctrine 2, в частности для создания моделей и валидации. В Symfony 2 так же добавлена поддаржка аннотаций с помощью двух бандлов: SensioFrameworkExtraBundle и JMSSecurityExtraBunlde. Два этих бандла позволяют конфигурировать такие аспекты работы приложения, как шаблонизация, права доступа, роутинг и другие. Конечно, возможность писать конфиги на XML или YAML никто не отменял, но аннотации позволяют вам делать это прям в файле контроллера, причем достаточно легко и быстро.
Стоит отметить что механизм аннотаций основан на фиче php 5 — работе с Reflection API (документация, в основном вся работа с ними проходит в SensioFrameworkExtraBunlde’e, который в свою очередь использует некоторые компоненты Doctrine 2, а так же непосредственно Reflection API.
SensioFrameworkExtraBundle
Благодаря этому бандлу мы можем использовать такие аннотации, как:
- @Route
- @Method
- @Template
- @Cache
- @ParamConvert
Из названия аннотаций примерно понятно, на что они влияют, более подробно они, принимаемые ими параметры и возможности описаны в документации фрэймворка.
JMSSecurityExtraBunlde
Этот бандл предоставляет расширенные возможности Symfony 2 Security компонента, в частности аннотации позволяют разграничить доступ к отдельным действиям контроллера. Бандл определяет следующие аннотации:
- @PreAuthorize
- @Secure
- @SecureParam
- @SecureReturn
- @RunAs
- @SatisfiesParentSecurityPolicy
Документация, установка и конфигурирование бандла по ссылке
Ко всем своим достоинствам, Symfony позволяет добавлять свои аннотации. Для этого достаточно создать класс, описывающий метод-хук контроллера onKernelController, а потом зарегестрировать его в конфиге сервисов.
Кстати, аннотации, как и другие конфиги, отлично кэшируются. Я дико полюбил этот интсрумент, чего и тебе советую, уважаемый читатель. Use the annotations, Luke.