#[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 конфігурації.