📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials PHP for Beginners Attributes (Annotations)

Attributes (Annotations)

6 min read
PHP Attributes add metadata to classes and methods using #[AttributeName] syntax. Frameworks use them for routing and validation configuration. They are a cleaner replacement for configuration in docblock comments.

PHP 8 Attributes

#[Attribute]
class Route {
    public function __construct(
        public string $path,
        public array  $methods = ["GET"]
    ) {}
}

#[Attribute]
class Inject {}

// Usage
#[Route("/api/users", methods: ["GET", "POST"])]
class UserController {
    #[Inject]
    private UserService $service;

    #[Route("/api/users/{id}")]
    public function show(int $id): void {}
}

// Reading attributes via Reflection
$ref   = new ReflectionClass(UserController::class);
$attrs = $ref->getAttributes(Route::class);
foreach ($attrs as $attr) {
    $route = $attr->newInstance();
    echo $route->path;  // /api/users
}