Laravel Pennant hrani in pridobiva vrednosti zastavice z uporabo prilagodljivega sistema za shranjevanje, ki podpira dva glavna gonilnika: gonilnik matrike v pomnilniku in vztrajni gonilnik baze podatkov.
Mehanizmi za shranjevanje:
- Gonilnik matrike: Ta gonilnik shrani razrešene vrednosti zastavice funkcij v pomnilniku. Hitro, vendar prehodno, kar pomeni, da vrednosti shranjenih funkcij obstajajo le med trenutnim življenjskim ciklom zahteve in se izgubijo pozneje. To je koristno za preproste ali začasne primere uporabe, kjer obstojnost ni potrebna.
- gonilnik baze podatkov (privzeto): Pennant lahko vztraja vrednosti zastav funkcij v relacijski bazi podatkov, zlasti v tabeli `Funkcije", ustvarjene z izvajanjem migracij Pennant. Ta gonilnik vztrajno shrani vrednosti zastavice razrešene funkcije, kar omogoča skupno rabo vrednosti v več zahtevah in strežnikih. Idealen je za aplikacije, ki delujejo na več strežnikih ali brez strežnikov. Gonilnik baze podatkov uporablja tudi predpomnilnik v pomnilniku med eno samo zahtevo, da se izogne ponavljajočim se poizvedbam baze podatkov za isto zastavo funkcije, kar izboljšuje delovanje [1] [2] [5].
Kako so opredeljene in rešene zastavice funkcij:
- Zastavice funkcij so definirane z uporabo zapiranja, ki vsebujejo logiko, da se ugotovi, ali je funkcija aktivna ali ne. Te zapiranja lahko sprejmejo parametre, kot je overjeni uporabnik, kar omogoča zastavice funkcij (npr. Omogočanje funkcije samo za skrbniške uporabnike).
- Ko se zastavi za funkcijo najprej preveri za določen obseg (na primer uporabnik), Pennant izvede zaprtje za rešitev vrednosti funkcije. Ta razrešena vrednost se nato shrani v konfigurirani gonilnik pomnilnika (matrika ali baza podatkov).
- Pri naslednjih pregledih za isto funkcijo in obseg zastavico pridobi shranjeno vrednost iz gonilnika pomnilnika, namesto da bi jo preračunal, kar optimizira zmogljivost [2] [3].
Pridobivanje vrednosti zastave funkcije:
-Vrednost ene same funkcij lahko pridobite z metodami, kot je `Feature :: Active ('Feature-Name')`, da preverite, ali je omogočeno (boolean) ali `funkcija :: vrednost ('imena funkcije')`, da dobite svojo vrednost, ki je lahko boolean ali katera koli druga vrsta podatkov (zastave z bogato vrednostjo).
- Pennant ponuja tudi metode za pridobivanje več vrednosti zastav funkcij naenkrat, na primer `funkcija :: vrednosti (['funkcija 1', 'funkcija2'])` ali `funkcija :: vse ()`, da dobite vse definirane funkcije za določen obseg.
- Razrede funkcij je mogoče dinamično odkriti in registrirati, da se zagotovi, da so vključeni pri pridobivanju vseh zastavic funkcij [1] [2].
Povzetek:
Laravel Pennant razreši vrednosti zastavice z izvajanjem uporabniško definiranih logičnih zapiranja in nato te razrešene vrednosti shrani bodisi začasno v pomnilniški niz ali vztrajno v tabeli baze podatkov. Ta mehanizem za shranjevanje omogoča Pennantu, da učinkovito pridobiva stanja zastave funkcij na nadaljnjih zahtevah brez preračunavanja, podpira tako preproste in zapletene primere uporabe, vključno z zastavicami na uporabnika. Privzeti in priporočeni pristop je uporaba gonilnika baze podatkov za vztrajno shranjevanje, zlasti v več strežniku ali proizvodnem okolju, medtem ko gonilnik matrike ustreza prehodnim ali preskusnim scenarijem [1] [2] [5].
Navedbe:
[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-penant-feature-flagging-made-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-manage-flags-flags-with-lavel-Pennant-in-2024-1phb
[7] https://stackoverflow.com/questions/7751003/laravel-pennant-store-against-session-for-a-b-testing
[8] https://laracasts.com/series/whats-new-in-lavel-10/episodes/5