Gli Attributes (PHP 8+) aggiungono metadati alle dichiarazioni.
Definire un Attribute
#[Attribute]
class Route {
public function __construct(
public string $path,
public string $method = "GET"
) {}
}Usare Attributes
class UserController {
#[Route("/users", "GET")]
public function index() {
return User::all();
}
#[Route("/users/{id}", "GET")]
public function show(int $id) {
return User::find($id);
}
}Leggere Attributes con Reflection
$reflection = new ReflectionMethod(UserController::class, "index");
$attributes = $reflection->getAttributes(Route::class);
foreach ($attributes as $attr) {
$route = $attr->newInstance();
echo $route->path; // "/users"
}