Глоссарий

Атрибуты PHP (Attributes)

Атрибуты (PHP 8.0) — структурные метаданные, добавляемые к классам, методам, свойствам и параметрам. Заменили docblock-аннотации (@Route, @Inject) нативным синтаксисом, проверяемым статическим анализом.

Синтаксис

#[Attribute]
class Route {
  public function __construct(
    public string $path,
    public string $method = 'GET',
  ) {}
}

#[Route('/users', 'GET')]
#[Middleware(AuthMiddleware::class)]
class UserController {
  #[Route('/users/{id}')]
  public function show(int $id): Response { ... }
}

Чтение атрибутов

$ref = new ReflectionClass(UserController::class);
$attrs = $ref->getAttributes(Route::class);
foreach ($attrs as $attr) {
  $route = $attr->newInstance(); // Route('/users', 'GET')
}

Где используются

DI-контейнеры, роутеры, ORM-маппинг, валидаторы, сериализаторы. Symfony и Doctrine активно используют атрибуты вместо XML/YAML конфигурации.