Skip to main content
Die Grundlagen finden Sie auf der Guide-Seite. Auf dieser Seite stellen wir praxisnahe Muster vor, die in der offiziellen Dokumentation nicht enthalten sind.

Team-Scope in Multi-Tenant-SaaS

Wenn Sie Flags nicht pro Nutzer, sondern pro Team (Tenant) verwalten möchten, ändern Sie den Default-Scope auf das Team.
Damit richtet sich Feature::active('billing-v2') automatisch auf das aktuelle Team. Solange die Mitglieder demselben Team angehören, erhalten sie unabhängig davon, wer aktiv ist, dasselbe Ergebnis – die UI-Konsistenz bleibt erhalten. Beispiel für einen stufenweisen Rollout anhand des Anmeldedatums des Teams:
Wenn Sie nur bestimmte Teams aktivieren möchten (z. B. Vorabzugang für Enterprise-Kunden):

Notfall-Kill-Switch (Nutzung der Methode before)

Wenn in der Produktion ein Bug entdeckt wird, lässt sich das Feature ohne Code-Rollback sofort deaktivieren. Ergänzen Sie eine before-Methode an einem klassenbasierten Feature; diese Prüfung läuft vor dem Speicherwert.
Ein Setzen der Umgebungsvariable FEATURES_NEW_CHECKOUT_DISABLED=true stoppt das Feature, ohne die DB anzufassen. Ein Kill-Switch ohne Deployment.
Gibt before null zurück, wird resolve() ausgeführt. Wird false zurückgegeben, wird das Feature sofort als inaktiv behandelt. Außerhalb von Notfällen sollten Sie null zurückgeben.

Geplanter Rollout

Ein Fall, in dem ein Feature zu einem festgelegten Zeitpunkt automatisch für alle veröffentlicht werden soll. Umsetzbar über die Methode before.
Damit wird das Feature nach dem 2025-04-01 automatisch für alle Nutzer freigegeben. Kein Deployment, keine DB, kein Artisan-Kommando nötig.

Dark Launch (Shadow Mode)

Ein Muster, bei dem eine neue Logik im produktiven Datenbestand läuft, ohne den Nutzern angezeigt zu werden, und mit der alten Logik verglichen wird. Gibt es keine Probleme, reicht später das Aktivieren der Flag für den Release.
Prüfen Sie die Logs; sobald keine Differenzen mehr auftreten, genügt es, die Flag auf recommendation-v2 umzustellen.

Ergebnisse aus A/B-Tests per Event einsammeln

In der offiziellen Dokumentation wird das Event FeatureRetrieved erwähnt, ein konkretes Muster zur Auswertung von A/B-Tests ist jedoch nicht ausgeführt. Das Event FeatureResolved wird nur beim erstmaligen Auflösen des Wertes ausgelöst. Nutzen Sie das, um die Variantenzuweisung des Nutzers festzuhalten.
Wenn Sie zusätzlich die Conversions gesondert festhalten, können Sie die Conversion-Rate pro Variante auswerten.
Unterschied zwischen FeatureResolved und FeatureRetrieved: FeatureResolved wird nur beim ersten Auswerten ausgelöst, FeatureRetrieved bei jeder Prüfung. Für Zuweisungs-Records eignet sich FeatureResolved, für Page-View-Tracking FeatureRetrieved.

Scope in gequeueten Jobs

In Queue-Jobs existiert kein authentifizierter Nutzer, sodass Feature-Checks unerwartetes Verhalten zeigen können. Übergeben Sie den Scope daher explizit an den Job.
Alternativ können Sie die Flag beim Dispatch des Jobs evaluieren und dem Job mitgeben.

Management-UI per Artisan-Kommando

Ein simples Artisan-Kommando zur Flag-Verwaltung erlaubt das Steuern von Produktions-Flags ohne Deployment.

Sicheres Umbenennen von Feature-Namen (Attribut Name)

Wenn Sie ein klassenbasiertes Feature umbenennen und sich damit der in der DB gespeicherte Flag-Name ändert, werden die Flags aller Nutzer zurückgesetzt. Fixieren Sie den Speichernamen mit dem Attribut Name.
Damit können Sie den Klassennamen beliebig refactoren, ohne dass sich die DB-Daten ändern.

Fazit

Wenn Sie die Grundlagen aus der offiziellen Dokumentation beherrschen, entfaltet Pennant mit folgenden Mustern sein volles Potenzial.

Laravel-Pennant-Leitfaden

Installation und grundlegende Verwendung finden Sie auf der Guide-Seite.
Zuletzt geändert am 13. Juli 2026