Scope par équipe dans un SaaS multi-locataire
Si vous souhaitez gérer les flags à l’échelle de l’équipe (locataire) plutôt qu’à l’échelle de l’utilisateur, changez le scope par défaut vers l’équipe.Feature::active('billing-v2') cible automatiquement l’équipe courante. Comme tous les membres d’une même équipe obtiennent le même résultat, la cohérence de l’UI est préservée.
Exemple de déploiement progressif selon la date d’inscription de l’équipe.
Kill switch d’urgence (méthode before)
Lorsqu’un bug se manifeste en production, vous pouvez désactiver immédiatement une fonctionnalité sans rollback du code. En ajoutant la méthode before à une feature basée sur classe, la vérification est effectuée avant les valeurs stockées.
FEATURES_NEW_CHECKOUT_DISABLED=true en variable d’environnement pour arrêter la fonctionnalité sans toucher à la base. C’est un kill switch qui ne demande aucun déploiement.
Rollout planifié
Vous voulez ouvrir automatiquement une fonctionnalité à tous les utilisateurs à une date donnée. Utilisez la méthodebefore.
2025-04-01, la fonctionnalité s’ouvre automatiquement à tous. Pas de déploiement, pas de base, pas de commande Artisan.
Dark launch (mode shadow)
Un patron où la nouvelle logique tourne sur les données de production sans être visible pour l’utilisateur, avec comparaison des résultats à l’ancienne. Si tout va bien, il suffit d’activer le flag pour finaliser la mise en production.recommendation-v2.
Collecte des résultats A/B via événements
La documentation officielle mentionne l’événementFeatureRetrieved mais ne montre pas de patron concret d’agrégation A/B.
L’événement FeatureResolved est déclenché uniquement à la première résolution d’une feature. Utilisez-le pour enregistrer l’attribution du variant à un utilisateur.
Différence entre
FeatureResolved et FeatureRetrieved : FeatureResolved se déclenche uniquement à la première évaluation ; FeatureRetrieved à chaque vérification. Utilisez FeatureResolved pour la trace d’attribution, FeatureRetrieved pour le suivi des pages vues.Scope dans les jobs en file d’attente
Dans un job de queue, il n’y a pas d’utilisateur authentifié : les vérifications de feature peuvent produire des comportements inattendus. Passez explicitement un scope au job.Interface de gestion via commande Artisan
Une simple commande Artisan permet de manipuler les flags en production sans déploiement.Refactor sûr d’un nom de feature (attribut Name)
Lorsque vous renommez une feature basée sur classe, le nom stocké en base change et remet à zéro les flags de tous les utilisateurs. Fixez le nom stocké avec l’attribut Name.
Conclusion
Une fois les bases de la documentation officielle maîtrisées, ces patrons révèlent tout le potentiel de Pennant.Guide Laravel Pennant
Consultez la page de guide pour l’installation et les bases.