Attributes sind strukturierte Metadaten für Klassen, Methoden und Properties. Sie ersetzen DocBlock-Annotationen.
Attributes stehen in eckigen Klammern mit #[Attribute]-Syntax und werden per Reflection ausgelesen:
Ein einfaches Attribute definieren
#[\Attribute(\Attribute::TARGET_METHOD)]
class Route
{
public function __construct(
public string $method,
public string $path,
) {}
}
Verwendung an einer Methode
class UserController
{
#[Route(method: 'GET', path: '/users')]
public function index(): array
{
return User::all();
}
#[Route(method: 'POST', path: '/users')]
public function store(array $data): User
{
return User::create($data);
}
}
Attribute per Reflection auslesen
$reflection = new ReflectionClass(UserController::class);
foreach ($reflection->getMethods() as $method) {
foreach ($method->getAttributes(Route::class) as $attr) {
$route = $attr->newInstance();
echo "{$route->method} {$route->path} → {$method->name}\n";
}
}
// GET /users → index
// POST /users → store
Praxisbeispiele in freier Wildbahn: Symfony Routing, Doctrine ORM, PHPUnit-Test-Attribute (#[Test], #[DataProvider]), Laravel Route Attributes.
Häufige Fragen
Zu welcher Sprache gehört dieses Kapitel?
Dieses Kapitel ist Teil der PHP-Referenz auf programmierung.net.
Wie ist das Kapitel aufgebaut?
Jedes Kapitel folgt derselben Struktur: Konzept, Syntax, Beispiele und Randfälle. Code-Beispiele sind kopierfertig und syntax-geprüft.
Wo finde ich die vollständige Übersicht?
Alle Kapitel findest du in der Sidebar oder in der PHP-Übersicht. Für Funktionen & Klassen gibt es die separate Referenz.