Одним из крутых инструментов фрэймворка 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.