Laravel vimpeļu veikali un izguves funkciju karoga vērtības, izmantojot elastīgu uzglabāšanas sistēmu, kas atbalsta divus galvenos draiverus: atmiņas masīva draiveri un pastāvīgu datu bāzes draiveri.
Uzglabāšanas mehānismi:
- Masīva draiveris: Šis draiveris glabā atrisinātas funkciju karoga vērtības atmiņā masīvā. Tas ir ātrs, bet īslaicīgs, kas nozīmē, ka saglabātās funkcijas karoga vērtības pastāv tikai pašreizējā pieprasījuma dzīves cikla laikā un pēc tam tiek zaudētas. Tas ir noderīgi vienkāršiem vai pagaidu lietošanas gadījumiem, kad noturība nav nepieciešama.
- Datubāzes draiveris (noklusējuma): vimpelis var saglabāt funkciju karoga vērtības relāciju datu bāzē, īpaši tabulā “Funkcijas”, kas izveidota, darbinot Penant migrāciju. Šis draiveris pastāvīgi saglabā izšķirtspējas funkcijas karoga vērtības, ļaujot vērtības koplietot vairākos pieprasījumos un serveros. Tas ir ideāli piemērots lietojumprogrammām, kas darbojas vairākos serveros vai bez servera vidēs. Datubāzes draiveris vienas pieprasījuma laikā izmanto arī atmiņas kešatmiņu, lai izvairītos no atkārtotiem datu bāzes vaicājumiem par to pašu funkciju karogu, uzlabojot veiktspēju [1] [2] [5].
Kā tiek definēti un atrisināti funkciju karodziņi:
- Funkciju karodziņi tiek definēti, izmantojot aizvērumus, kas satur loģiku, lai noteiktu, vai funkcija ir aktīva vai nē. Šie slēgšana var pieņemt tādus parametrus kā autentificēts lietotājs, ļaujot veikt apjomīgus funkciju karodziņus (piemēram, iespējot funkciju tikai administratora lietotājiem).
- Kad Funkcijas karodziņš pirmo reizi tiek pārbaudīts, lai noteiktu noteiktu darbības jomu (piemēram, lietotājs), Pennants izpilda slēgšanu, lai atrisinātu funkcijas vērtību. Pēc tam šī atrisinātā vērtība tiek saglabāta konfigurētajā glabāšanas draiverī (masīvā vai datu bāzē).
- Turpmākajās pārbaudēs par to pašu funkciju un darbības jomu vimpelis izgūst saglabāto vērtību no krātuves draivera, nevis to pārrēķina, kas optimizē veiktspēju [2] [3].
Funkciju karoga vērtību iegūšana:
-Jūs varat izgūt viena funkcijas karoga vērtību, izmantojot tādas metodes kā `Funkcija :: Aktīvs ('funkcijas nosaukums')` Lai pārbaudītu, vai tā ir iespējota (Būla) vai “funkcija :: Vērtība ('Feature-nosaukums')` Lai iegūtu tā vērtību, kas var būt Būla vai jebkurš cits datu tips (bagātības vērtības karodziņi).
- Vimpelis arī nodrošina metodes, kā vienlaikus iegūt vairākas funkciju karoga vērtības, piemēram, `funkcija :: vērtības (['Feature1', 'Feature2'])` vai `funkcija :: visi ()` Lai iegūtu visas noteiktās darbības jomas noteiktās funkcijas.
- Features klases var dinamiski atklāt un reģistrēt, lai pārliecinātos, ka tās ir iekļautas, izgūstot visus funkciju karodziņus [1] [2].
Kopsavilkums:
Laravel Pennant izšķir funkciju karoga vērtības, palaižot lietotāja definētas loģikas slēgšanas, un pēc tam uz laiku glabā šīs izšķirtās vērtības vai nu atmiņā vai pastāvīgi datu bāzes tabulā. Šis uzglabāšanas mehānisms ļauj vimpenim efektīvi izgūt funkciju karoga stāvokļus turpmākajos pieprasījumos, nepārrēķinot, atbalstot gan vienkāršus, gan sarežģītus lietošanas gadījumus, ieskaitot karodziņus uz vienu lietotāju. Noklusējuma un ieteiktā pieeja ir datu bāzes draivera izmantošana pastāvīgai glabāšanai, īpaši vairāku serveru vai ražošanas vidē, savukārt masīva draiveris atbilst īslaicīgiem vai testēšanas scenārijiem [1] [2] [5].
Atsauces:
[1] https://laravel.com/docs/11.x/pennant
[2] https://www.honeybadger.io/blog/a-guide-to-flags-in-laravel/
[3] https://www.reddit.com/r/laravel/comments/10yto7q/laravel_pennant_simple_and_lightweight_feature/
[4] https://redberry.international/laravel-pennant-flagure-flagging-made-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6.]
[7] https://stackoverflow.com/questions/77751003/laravel-pennant-store-against-session-for-a-b-bresting
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5