Laravel Pennant uloží a získa hodnoty príznakov funkcií pomocou flexibilného úložného systému, ktorý podporuje dva hlavné ovládače: ovládač poľa v pamäti a pretrvávajúci ovládač databázy.
Mechanizmy skladovania:
- Ovládač poľa: Tento ovládač ukladá vyriešené hodnoty príznakov funkcií v poli v pamäti. Je rýchly, ale prechodný, čo znamená, že hodnoty uložených príznakov funkcií existujú iba počas aktuálneho životného cyklu požiadavky a potom sa stratia. Je to užitočné pre jednoduché alebo dočasné prípady použitia, keď sa nevyžaduje vytrvalosť.
- Databázový ovládač (predvolené): Pennant môže pretrvávať hodnoty príznakov funkcií v relačnej databáze, konkrétne v tabuľke „Funkcie“ vytvorenú spustením migrácií spoločnosti Pennant. Tento ovládač neustále ukladá hodnoty príznakov funkcie vyriešené, čo umožňuje zdieľanie hodnôt na viacerých požiadavkách a serveroch. Je ideálny pre aplikácie bežiace na viacerých serveroch alebo na serverových prostrediach. Databázový ovládač tiež používa vyrovnávaciu pamäť v pamäti počas jednej požiadavky, aby sa zabránilo opakovaným databázovým dotazom pre rovnaký príznak funkcie, čo zlepšuje výkon [1] [2] [5].
Ako sú definované a vyriešené príznaky funkcií:
- Príznaky funkcií sú definované pomocou uzáverov, ktoré obsahujú logiku, aby sa určilo, či je funkcia aktívna alebo nie. Tieto uzávery môžu akceptovať parametre, ako je autentifikovaný užívateľ, čo umožňuje príznaky funkcií (napr. Povolenie funkcie iba pre používateľov správcov).
- Ak sa príznak funkcie najskôr skontroluje pre daný rozsah (napríklad používateľ), Pennant vykoná uzavretie, aby vyriešil hodnotu funkcie. Táto vyriešená hodnota sa potom uloží do nakonfigurovaného ovládača úložiska (pole alebo databáza).
- Pri následných kontrolách rovnakej funkcie a rozsahu, Pennant načíta uloženú hodnotu z ovládača úložného priestoru namiesto toho, aby ju prepočítal, čo optimalizuje výkon [2] [3].
Načítanie hodnôt príznakov funkcií:
-Môžete načítať hodnotu jedného príznaku jednej funkcie pomocou metód ako `Function :: Active ('Feature-name')` skontrolovať, či je povolená (boolean) alebo `Funkcia :: Value ('funkcia-name')` Získať svoju hodnotu, ktorá môže byť boolean alebo akýkoľvek iný typ údajov (Rich-Value Flags).
- Pennant tiež poskytuje metódy na načítanie viacerých hodnôt príznakov funkcií naraz, ako napríklad „Funkcia :: Value (['Feature1', 'Feature2'])` alebo `Funkcia :: All ()` Získať všetky definované funkcie pre daný rozsah.
- Triedy funkcií je možné dynamicky objavovať a zaregistrovať, aby sa zabezpečilo, že sú zahrnuté pri získavaní všetkých príznakov funkcií [1] [2].
Zhrnutie:
Laravel Pennant vyrieši hodnoty príznakov funkcií spustením logických uzáverov definovaných používateľom a potom tieto vyriešené hodnoty uloží buď dočasne do poľa v pamäti alebo trvalo v databázovej tabuľke. Tento mechanizmus úložného priestoru umožňuje spoločnosti Pennant efektívne načítať stavy príznakov funkcií v nasledujúcich požiadavkách bez prepočítania, čo podporuje jednoduché aj zložité prípady použitia vrátane skrytých príznakov na používateľa. Predvoleným a odporúčaným prístupom je použitie ovládača databázy na pretrvávajúce úložisko, najmä v prostrediach s viacerými servermi alebo výrobnými prostrediami, zatiaľ čo vodič poľa vyhovuje prechodným alebo testovacím scenárom [1] [2] [5].
Citácie:
[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-atery-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-thore-against-session-for-----b-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5