Laravel Pennant menyimpan dan mengambil nilai bendera fitur menggunakan sistem penyimpanan fleksibel yang mendukung dua driver utama: driver array dalam memori dan driver database persisten.
Mekanisme Penyimpanan:
- Driver Array: Driver ini menyimpan nilai bendera fitur yang diselesaikan dalam array dalam memori. Ini cepat tetapi sementara, yang berarti nilai bendera fitur yang disimpan hanya ada selama siklus hidup permintaan saat ini dan hilang sesudahnya. Ini berguna untuk kasus penggunaan sederhana atau sementara di mana kegigihan tidak diperlukan.
- Driver Database (Default): Pennant dapat bertahan dari nilai bendera fitur dalam database relasional, khususnya dalam tabel `fitur` yang dibuat dengan menjalankan migrasi Pennant. Driver ini menyimpan nilai bendera fitur yang diselesaikan secara terus -menerus, memungkinkan nilai -nilai untuk dibagikan di beberapa permintaan dan server. Ini sangat ideal untuk aplikasi yang berjalan di beberapa server atau lingkungan tanpa server. Driver database juga menggunakan cache dalam memori selama satu permintaan untuk menghindari kueri database berulang untuk bendera fitur yang sama, meningkatkan kinerja [1] [2] [5].
Bagaimana bendera fitur didefinisikan dan diselesaikan:
- Bendera fitur didefinisikan menggunakan penutupan yang berisi logika untuk menentukan apakah suatu fitur aktif atau tidak. Penutupan ini dapat menerima parameter seperti pengguna yang diautentikasi, memungkinkan bendera fitur yang dilingkupi (mis., Mengaktifkan fitur hanya untuk pengguna admin).
- Ketika bendera fitur pertama kali diperiksa untuk ruang lingkup yang diberikan (seperti pengguna), Pennant menjalankan penutupan untuk menyelesaikan nilai fitur. Nilai yang diselesaikan ini kemudian disimpan dalam driver penyimpanan yang dikonfigurasi (array atau database).
- Pada pemeriksaan selanjutnya untuk fitur dan ruang lingkup yang sama, Pennant mengambil nilai yang tersimpan dari driver penyimpanan alih -alih menghitung ulang, yang mengoptimalkan kinerja [2] [3].
Mengambil Nilai Bendera Fitur:
-Anda dapat mengambil nilai bendera fitur tunggal menggunakan metode seperti `fitur :: aktif ('fitur-nama')` untuk memeriksa apakah diaktifkan (boolean) atau `fitur :: value ('fitur-nama')` untuk mendapatkan nilainya, yang dapat berupa boolean atau tipe data lainnya (bendera bernilai kaya).
- Pennant juga menyediakan metode untuk mengambil beberapa nilai flag fitur sekaligus, seperti `fitur :: values (['feature1', 'feature2'])` atau `fitur :: all ()` untuk mendapatkan semua fitur yang ditentukan untuk ruang lingkup yang diberikan.
- Kelas fitur dapat ditemukan dan terdaftar secara dinamis untuk memastikan mereka disertakan ketika mengambil semua bendera fitur [1] [2].
Ringkasan:
Laravel Pennant menyelesaikan nilai bendera fitur dengan menjalankan penutupan logika yang ditentukan pengguna dan kemudian menyimpan nilai-nilai yang diselesaikan ini baik sementara dalam array dalam memori atau terus-menerus dalam tabel database. Mekanisme penyimpanan ini memungkinkan Pennant untuk secara efisien mengambil status bendera fitur pada permintaan selanjutnya tanpa perhitungan ulang, mendukung kasus penggunaan sederhana dan kompleks termasuk bendera tersingkir per pengguna. Pendekatan default dan yang disarankan adalah menggunakan driver database untuk penyimpanan persisten, terutama di lingkungan multi-server atau produksi, sedangkan driver array sesuai dengan skenario transien atau pengujian [1] [2] [5].
Kutipan:
[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-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-manage-feature-flags-with-laravel-pennant-2024-1phb
[7] https://stackoverflow.com/questions/77751003/laravel-pennant-store-against-session-for-a-b-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5