Operations als PHP-Klassen verstehen
Operations als PHP-Klassen verstehen
~14 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026
Die SECHS Endpunkte aus Kapitel 10 entstehen nicht durch Magie, sondern durch SECHS konkrete PHP-Klassen aus dem Namespace ApiPlatform\Metadata – #[ApiResource] OHNE Angaben aktiviert sie einfach ALLE mit ihren STANDARD-Einstellungen.
Die Operations explizit auflisten
#[ApiResource(
operations: [
new GetCollection(),
new Get(),
new Post(),
new Put(),
new Patch(),
new Delete(),
]
)]
#[ORM\Entity(repositoryClass: ProjectRepository::class)]
class Project
{
// ... unverändert
}GENAU dasselbe Verhalten wie das leere #[ApiResource] aus Kapitel 9 – aber jetzt SICHTBAR und damit AN JEDER EINZELNEN Operation individuell anpassbar. Die Klassen kommen aus ApiPlatform\Metadata und MÜSSEN importiert werden.
Item-Operationen vs. Collection-Operationen
API Platform unterscheidet ZWEI Operations-Familien, erkennbar am Klassennamen:
| Operation-Typ | Verhalten |
|---|---|
GetCollection | Wirkt auf die SAMMLUNG – Pfad OHNE {id}, z. B. GET /api/projects |
Get, Put, Patch, Delete | Wirken auf EIN einzelnes Element – Pfad MIT {id}, z. B. GET /api/projects/1 |
Post | SONDERFALL: erstellt ein NEUES Element, aber der Pfad hat KEIN {id} (das entsteht ERST durch die Operation) |
Operationen einzeln konfigurieren
Der ECHTE Nutzen der expliziten Liste: JEDE Operation akzeptiert EIGENE Parameter – zum Beispiel eine eigene Beschreibung für die Swagger-UI, die NUR bei dieser einen Operation erscheint.
#[ApiResource(
operations: [
new GetCollection(),
new Get(),
new Post(
description: 'Legt ein neues Projekt an. Der Name muss eindeutig sein.'
),
new Put(),
new Patch(),
new Delete(),
]
)]
Diese description erscheint DIREKT in der Swagger UI aus Kapitel 6, NUR bei der POST-Operation – GET /api/projects zeigt sie NICHT an, da sie an eine ANDERE Operation gebunden ist.
Tipp: Diese Klassen-Liste ist der SCHLÜSSEL zu allem Weiteren in diesem Block: Kapitel 12 ENTFERNT einzelne Klassen aus der Liste (schreibgeschützte Resources), Kapitel 13 ergänzt uriTemplate pro Klasse, und Kapitel 61 fügt SPÄTER GANZ NEUE, selbst geschriebene Operation-Klassen hinzu.