Laravel Pennant Stores a načítá hodnoty příznaku funkcí pomocí flexibilního úložného systému, který podporuje dva hlavní ovladače: ovladač pole v paměti a přetrvávající ovladač databáze.
Skladovací mechanismy:
- Řidič pole: Tento ovladač ukládá vyřešené hodnoty příznaku funkcí v pole v paměti. Je to rychlé, ale přechodné, což znamená, že hodnoty příznaku uložených funkcí existují pouze během aktuálního životního cyklu žádosti a poté se ztratí. To je užitečné pro jednoduché nebo dočasné případy použití, kdy není vyžadována vytrvalost.
- ovladač databáze (výchozí): Pennant může přetrvávat hodnoty příznaku v relační databázi, konkrétně v tabulce „Funkce“ vytvořená spuštěním migrace Pennant. Tento ovladač trvale ukládá hodnoty příznaku vyřešených funkcí, což umožňuje sdílení hodnot na více požadavcích a serverech. Je ideální pro aplikace spuštěné na více serverech nebo v prostředí bez serverů. Řidič databáze také používá mezipaměť v paměti během jediného požadavku, aby se zabránilo opakovaným dotazům na databázi pro stejný příznak funkcí, což zlepšilo výkon [1] [2] [5].
Jak jsou definovány a vyřešeny příznaky funkcí:
- Příznaky prvků jsou definovány pomocí uzávěrů, které obsahují logiku, aby se určilo, zda je funkce aktivní nebo ne. Tato uzavření mohou přijímat parametry, jako je ověřený uživatel, což umožňuje příznaky s rozsazenou funkcí (např. Umožnění funkce pouze pro uživatele admin).
- Když je příznak funkce poprvé zkontrolován daný rozsah (například uživatel), Pennant provádí uzavření a vyřeší hodnotu funkce. Tato vyřešená hodnota je poté uložena v konfigurovaném ovladači úložiště (pole nebo databáze).
- Při následných kontrolách stejný prvek a rozsah načte Pennant uloženou hodnotu z ovladače úložiště místo přepočítání, což optimalizuje výkon [2] [3].
Získání hodnot vlajky funkce:
-Hodnota jednoho příznaku prvku můžete získat pomocí metod jako `Funkce :: Active ('Feature-Name')` Chcete-li zkontrolovat, zda je povoleno (boolean) nebo `Funkce :: hodnota („ název funkce “)`, aby získal jeho hodnotu, což může být booleovské nebo jiné datové typy (příznaky bohaté hodnoty).
- Pennant také poskytuje metody k načtení více hodnot příznaku funkcí najednou, například `Funkce :: hodnoty (['Funkce1', 'Funkce2'])` nebo `Funkce :: all ()` Získat všechny definované funkce pro daný rozsah.
- Třídy prvků lze dynamicky objevit a registrovat, aby se zajistilo, že jsou zahrnuty při získávání všech příznaků prvků [1] [2].
Shrnutí:
Laravel Pennant řeší hodnoty příznaku funkcí spuštěním uzávěr logických logických definovaných uživatelem a poté tyto hodnoty ukládá dočasně do pole v paměti nebo trvale v databázové tabulce. Tento úložný mechanismus umožňuje Pennant efektivně načíst stavy vlajky prvků na následných požadavcích bez přepočtu a podporovat jednoduché i složité případy použití, včetně rozsazených příznaků na uživatele. Výchozí a doporučený přístup je používat ovladač databáze pro přetrvávající úložiště, zejména ve více serveru nebo produkčním prostředí, zatímco ovladač pole vyhovuje přechodným nebo testovacím scénářům [1] [2] [5].
Citace:
[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-asy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-manage-feature-flags-with-laravel-nant-in-2024-1phb
[7] https://stackoverflow.com/questions/77751003/laravel-pannant-tore-against-session-for-a-b-test
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5