Teamscope in een multi-tenant SaaS
Wil je flags beheren per team (tenant) in plaats van per individuele gebruiker, verander dan de standaardscope naar het team.Feature::active('billing-v2') zich automatisch op het huidige team. Welk teamlid het ook is, zolang die tot hetzelfde team behoort komt hetzelfde resultaat terug, waardoor de UI consistent blijft.
Een voorbeeld van een gefaseerde rollout op basis van de aanmelddatum van het team.
Noodkillswitch (de before-methode benutten)
Wordt er in productie een bug ontdekt, dan kun je de functie direct uitschakelen zonder code terug te draaien. Voeg aan een klassegebaseerde feature een before-methode toe, en die check draait vóór de waarde uit de storage.
FEATURES_NEW_CHECKOUT_DISABLED=true instellen is genoeg om de functie te stoppen zonder de database aan te raken. Een killswitch zonder deploy.
Geplande rollouts
Het scenario waarin je op een specifieke datum en tijd automatisch aan alle gebruikers wilt uitrollen. Dit implementeer je met debefore-methode.
2025-04-01 automatisch voor alle gebruikers beschikbaar. Automatisering zonder deploy, zonder database en zonder Artisan-commando.
Dark launch (shadow mode)
Het patroon waarbij je nieuwe logica op productiedata laat draaien zonder die aan gebruikers te tonen, en het resultaat vergelijkt met de oude logica. Zijn er geen problemen, dan is de release compleet door alleen de flag aan te zetten.recommendation-v2.
A/B-testresultaten verzamelen met events
De officiële documentatie noemt hetFeatureRetrieved-event, maar toont geen echte patronen voor A/B-testaggregatie.
Het FeatureResolved-event wordt alleen afgevuurd wanneer de waarde van een feature voor het eerst wordt geresolved. Hiermee registreer je de varianttoewijzing van een gebruiker.
Het verschil tussen
FeatureResolved en FeatureRetrieved: FeatureResolved vuurt alleen bij de eerste evaluatie, FeatureRetrieved vuurt bij elke check. Voor het vastleggen van toewijzingen is FeatureResolved geschikt, voor het volgen van paginaweergaven FeatureRetrieved.Scope in queued jobs
In queue-jobs bestaat er geen geauthenticeerde gebruiker, waardoor featurechecks zich onverwacht kunnen gedragen. Geef de job expliciet een scope mee.Een beheer-UI met Artisan-commando’s
Maak je een eenvoudig Artisan-commando om flags te beheren, dan kun je productieflags bedienen zonder deploy.Featurenamen veilig refactoren (het Name-attribute)
Wanneer je een klassegebaseerde feature hernoemt en de opgeslagen flagnaam in de database verandert, worden de flags van alle gebruikers gereset. Leg de opslagnaam vast met het Name-attribute.
Conclusie
Heb je de basis uit de officiële documentatie onder de knie, dan komt Pennant pas echt tot zijn recht met de volgende patronen.Laravel Pennant-gids
Zie de gidspagina voor de installatie en het basisgebruik.