Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Comment Laravel Pennant Store et récupérer les valeurs de drapeau des fonctionnalités


Comment Laravel Pennant Store et récupérer les valeurs de drapeau des fonctionnalités


Laravel Pennant Stores et récupère les valeurs de drapeau de fonction à l'aide d'un système de stockage flexible qui prend en charge deux pilotes principaux: un pilote de tableau en mémoire et un pilote de base de données persistant.

Mécanismes de stockage:

- Conducteur du tableau: ce pilote stocke les valeurs de l'indicateur de fonctions résolues dans un tableau en mémoire. Il est rapide mais transitoire, ce qui signifie que les valeurs de drapeau de fonction stockées n'existent que pendant le cycle de vie de la demande actuelle et sont perdus par la suite. Ceci est utile pour les cas d'utilisation simples ou temporaires où la persistance n'est pas requise.

- Database Driver (par défaut): Pennant peut persister les valeurs de l'indicateur de fonctionnalité dans une base de données relationnelle, en particulier dans un tableau «Fonctionnalités» créé en exécutant les migrations de Pennant. Ce pilote stocke de manière persistante les valeurs d'indicateur de fonctionnalité résolues, permettant de partager les valeurs sur plusieurs demandes et serveurs. Il est idéal pour les applications exécutées sur plusieurs serveurs ou environnements sans serveur. Le pilote de base de données utilise également un cache en mémoire lors d'une seule demande pour éviter les requêtes répétées de base de données pour le même indicateur de fonctionnalité, améliorant les performances [1] [2] [5].

Comment les drapeaux de fonction sont définis et résolus:

- Les drapeaux de fonction sont définis à l'aide de fermetures qui contiennent la logique pour déterminer si une fonctionnalité est active ou non. Ces fermetures peuvent accepter des paramètres tels que l'utilisateur authentifié, permettant des indicateurs de fonctionnalité portée (par exemple, l'activation d'une fonctionnalité uniquement pour les utilisateurs d'administration).

- Lorsqu'un drapeau de fonction est vérifié pour la première fois pour une portée donnée (comme un utilisateur), Pennant exécute la fermeture pour résoudre la valeur de la fonctionnalité. Cette valeur résolue est ensuite stockée dans le pilote de stockage configuré (tableau ou base de données).

- Sur les vérifications ultérieures de la même fonctionnalité et de la même portée, Pennant récupère la valeur stockée du pilote de stockage au lieu de le recalculer, ce qui optimise les performances [2] [3].

Récupération des valeurs du drapeau de fonction:

- Vous pouvez récupérer la valeur d'un indicateur de fonctionnalité unique à l'aide de méthodes comme `Feature :: Active ('fonctionnant-name')` Pour vérifier si elle est activée (booléen) ou `fonctionnalité :: valeur ('nom de fonctionnalité')` pour obtenir sa valeur, qui peut être booléen ou tout autre type de données (drapeaux de valeur riche).

- Pennant fournit également des méthodes pour récupérer plusieurs valeurs d'indicateur de fonctionnalités à la fois, telles que `elector :: valeurs (['elearbet1', 'eleart2'])` ou `fonctionnalité :: all ()` pour obtenir toutes les fonctionnalités définies pour une portée donnée.

- Les classes de fonctionnalités peuvent être découvertes et enregistrées dynamiquement pour s'assurer qu'elles sont incluses lors de la récupération de tous les indicateurs de fonction [1] [2].

Résumé:

Laravel Pennant résout les valeurs de l'indicateur de fonctionnalité en exécutant les fermetures logiques définies par l'utilisateur, puis stocke ces valeurs résolues temporairement dans un tableau en mémoire ou en constante évolution dans une table de base de données. Ce mécanisme de stockage permet à Pennant de récupérer efficacement les états de drapeau des fonctionnalités sur les demandes ultérieures sans recalculer, prenant en charge les cas d'utilisation simples et complexes, y compris les drapeaux dans le cadre de l'utilisateur. L'approche par défaut et recommandée consiste à utiliser le pilote de base de données pour le stockage persistant, en particulier dans les environnements multi-serveur ou de production, tandis que le pilote de tableau convient à des scénarios transitoires ou de test [1] [2] [5].

Citations:
[1] https://laravel.com/docs/11.x/Pennant
[2] https://www.honeybadger.io/blog/a-guide-to-geture-flags-in-lavavel/
[3] https://www.reddit.com/r/laravel/comments/10yto7q/laravel_pennant_simple_and_lightweight_feature/
[4] https://redberry.international/Laravel-Pennant-Featur-flagging-made-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-manage-feature-flags-with-laravel-pennant-in-2024-1phb
[7] https://stackoverflow.com/questions/77751003/Laravel-Pennant-store-against-Session-for-a-b-b-Testing
[8] https://laracast.com/series/whats-new-in--laravel-10/episodes/5