Laravel Pennant Stores and Hämtar har flaggvärden med ett flexibelt lagringssystem som stöder två huvuddrivare: en matrisdrivrutin och en ihållande databasdrivrutin.
Lagringsmekanismer:
- Array Driver: Den här drivrutinen lagrar löst funktionsvärden i en minnesgrupp. Det är snabbt men kortvarigt, vilket innebär att de lagrade funktionsflaggvärdena endast finns under den nuvarande livscykeln och går förlorade efteråt. Detta är användbart för enkla eller tillfälliga användningsfall där uthållighet inte krävs.
. Denna drivrutin lagrar de upplösta funktionsflaggvärdena ihållande, vilket gör att värdena kan delas över flera förfrågningar och servrar. Det är idealiskt för applikationer som körs på flera servrar eller serverlösa miljöer. Databasdrivrutinen använder också en cache i minnet under en enda begäran för att undvika upprepade databasfrågor för samma funktionsflagga, vilket förbättrar prestanda [1] [2] [5].
Hur funktionsflaggor definieras och lösts:
- Funktionsflaggor definieras med stängningar som innehåller logiken för att avgöra om en funktion är aktiv eller inte. Dessa stängningar kan acceptera parametrar som den autentiserade användaren, vilket möjliggör flaggor med scoped funktion (t.ex. möjliggör en funktion endast för adminanvändare).
- När en funktionsflagga först kontrolleras för ett givet omfattning (t.ex. en användare), kör vimpel stängningen för att lösa funktionens värde. Detta upplösta värde lagras sedan i den konfigurerade lagringsdrivrutinen (matris eller databas).
- Vid efterföljande kontroller av samma funktion och omfattning hämtar vimpel det lagrade värdet från lagringsdrivrutinen istället för att beräkna den, vilket optimerar prestanda [2] [3].
Hämtar Feature Flag Värden:
-Du kan hämta värdet på en enda funktionsflagg med hjälp av metoder som `Funktion :: Active ('Feature-Name')` för att kontrollera om det är aktiverat (Boolean) eller `Funktion :: Value ('Feature-Name') 'för att få sitt värde, som kan vara Boolean eller någon annan datatyp (Rich-Alue-flaggor).
- Pennant tillhandahåller också metoder för att hämta flera funktionsflaggvärden på en gång, såsom `funktion :: värden (['funktion1', 'funktion2'])` eller `funktion :: alla ()` för att få alla definierade funktioner för en given omfattning.
- Funktionsklasser kan upptäckas och registreras dynamiskt för att säkerställa att de ingår vid hämtning av alla funktionsflaggor [1] [2].
Sammanfattning:
Laravel-vimpel löser funktionsvärden genom att köra användardefinierade logikstängningar och lagrar sedan dessa upplösta värden antingen tillfälligt i en minnesgrupp eller ihållande i en databastabell. Denna lagringsmekanism gör det möjligt för vimpel att effektivt hämta funktionsflaggstillstånd på efterföljande förfrågningar utan omberäkning, vilket stödjer både enkla och komplexa användningsfall inklusive scoped flaggor per användare. Standard- och rekommenderad metod är att använda databasdrivrutinen för ihållande lagring, särskilt i multiserver eller produktionsmiljöer, medan matrisdrivrutinen passar kortvariga eller testningsscenarier [1] [2] [5].
Citeringar:
[1] https://laravel.com/docs/11.x/pennant
[2] https://www.honeybadger.io/blog/a-guide-to-feature-flags-in-laravel/
]
[4] https://redberry.international/laravel-pennant-feature-flagging-time-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-manage-feature-lags-with-learavel-pennant-in-2024-1phb
[7] https://stackoverflow.com/questions/77751003/laravel-pennant-store-alainst-session-for-a-b-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5