Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hoe stelt Laravel Pennant op en haalt de vlagwaarden van functies op


Hoe stelt Laravel Pennant op en haalt de vlagwaarden van functies op


Laravel Pennant slaat op en haalt functieswaarden op met behulp van een flexibel opslagsysteem dat twee hoofd stuurprogramma's ondersteunt: een in-memory array-stuurprogramma en een persistent databasestuurprogramma.

Opslagmechanismen:

- Array-stuurprogramma: deze stuurprogramma's slaat opgelost op functievlagwaarden in een array in het geheugen. Het is snel maar van voorbijgaande aard, wat betekent dat de opgeslagen vlagvlagwaarden alleen bestaan ​​tijdens de huidige levenscyclus van het verzoek en daarna verloren gaan. Dit is handig voor eenvoudige of tijdelijke use cases waarbij persistentie niet vereist is.

- Database -stuurprogramma (standaard): Pennant kan functieswaarden in een relationele database doorhouden, specifiek in een `functies' -tabel die is gemaakt door de migraties van Pennant uit te voeren. Dit stuurprogramma slaat de opgeloste functievlagwaarden voortdurend op, waardoor de waarden kunnen worden gedeeld over meerdere verzoeken en servers. Het is ideaal voor toepassingen die worden uitgevoerd op meerdere servers of serverloze omgevingen. Het databasestuurprogramma gebruikt ook een in-memory cache tijdens een enkel verzoek om herhaalde databasequery's voor dezelfde functievlag te voorkomen, waardoor de prestaties [1] [2] [5] worden verbeterd.

Hoe functievlaggen worden gedefinieerd en opgelost:

- Feature vlaggen worden gedefinieerd met behulp van sluitingen die de logica bevatten om te bepalen of een functie actief is of niet. Deze sluitingen kunnen parameters zoals de geverifieerde gebruiker accepteren, waardoor scoped -functievlaggen mogelijk zijn (bijvoorbeeld een functie alleen voor admin -gebruikers mogelijk maken).

- Wanneer een functievlag voor het eerst wordt gecontroleerd op een bepaalde reikwijdte (zoals een gebruiker), voert Pennant de sluiting uit om de waarde van de functie op te lossen. Deze opgeloste waarde wordt vervolgens opgeslagen in het geconfigureerde opslagstuurprogramma (array of database).

- Bij latere controles op dezelfde functie en reikwijdte haalt Pennant de opgeslagen waarde op van de opslagstuurprogramma in plaats van het opnieuw te berekenen, wat de prestaties optimaliseert [2] [3].

Vlagwaarden van functies ophalen:

-U kunt de waarde van een enkele functies ophalen met behulp van methoden zoals `Feature :: Active ('Feature-Name')` om te controleren of deze is ingeschakeld (Boolean) of `functie :: waarde ('functie-naam')` om de waarde ervan te krijgen, die Boolean of een ander gegevenstype (Rich-Value-vlaggen) kunnen krijgen.

- Pennant biedt ook methoden om meerdere functievlagwaarden tegelijk op te halen, zoals `Feature :: waarden (['Feature1', 'Feature2'])` of `functie :: all ()` om alle gedefinieerde functies voor een gegeven reikwijdte te krijgen.

- Feature klassen kunnen dynamisch worden ontdekt en geregistreerd om ervoor te zorgen dat ze worden opgenomen bij het ophalen van alle functievlaggen [1] [2].

Samenvatting:

Laravel Pennant lost functieswaarden op door door de gebruiker gedefinieerde logische sluitingen uit te voeren en slaat deze opgeloste waarden vervolgens tijdelijk op in een in-memory array of hardnekkig in een databasetabel. Dit opslagmechanisme stelt Pennant in staat om de vlaggentoestanden van functies efficiënt op te halen bij opeenvolgende verzoeken zonder opnieuw te berekenen, wat zowel eenvoudige als complexe use cases inclusief scoped vlaggen per gebruiker ondersteunt. De standaard en aanbevolen aanpak is om het databasestuurprogramma te gebruiken voor persistente opslag, vooral in multi-server- of productieomgevingen, terwijl de array-driver past bij tijdelijke of testscenario's [1] [2] [5].

Citaten:
[1] https://laravel.com/docs/11.x/pennant
[2] https://www.honeybadger.io/blog/a-guide-to-feature-flags-in-laravel/
[3] https://www.reddit.com/r/laravel/comments/10yto7q/laravel_pennant_simple_and_lightweight_feature/
[4] https://redberry.international/laravel-pennant-feature-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-sessie-for-a-b-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5