Зберігає та витягує значення Laravel Pennant та отримує значення прапора за допомогою гнучкої системи зберігання, яка підтримує два основні драйвери: драйвер масиву в пам’яті та стійкий драйвер бази даних.
Механізми зберігання:
- Драйвер масиву: Цей драйвер зберігає вирішені значення прапора функції в масиві в пам’яті. Він швидко, але тимчасовий, тобто значення збереженого прапора існують лише протягом поточного життєвого циклу запиту і згодом втрачаються. Це корисно для простих або тимчасових випадків використання, коли наполегливість не потрібна.
- Драйвер бази даних (за замовчуванням): вимпел може зберігати значення прапора в реляційній базі даних, зокрема в таблиці `функцій", створеної за допомогою міграції "Пеннант". Цей драйвер наполегливо зберігає вирішені значення прапора, що дозволяє ділитися значеннями на декількох запитах та серверах. Він ідеально підходить для додатків, що працюють на декількох серверах або без серверів. Драйвер бази даних також використовує кеш-пам'ять під час одного запиту, щоб уникнути повторних запитів бази даних для того ж прапора функції, вдосконалюючи продуктивність [1] [2] [5].
Як визначаються та вирішені прапори функцій:
- Прапори функцій визначаються за допомогою закриття, що містять логіку, щоб визначити, чи є функція активною чи ні. Ці закриття можуть приймати параметри, такі як автентифікований користувач, що дозволяє отримати прапори функцій (наприклад, дозволяючи функцію лише для користувачів адміністратора).
- Коли прапор функції вперше перевіряється на задану область (наприклад, користувач), вимпел виконує закриття для вирішення значення функції. Потім це вирішене значення зберігається у налаштованому драйвері зберігання (масив або база даних).
- Після наступних перевірок на наявність тієї ж функції та обсягу вимпел витягує збережене значення від драйвера зберігання замість перерахування, що оптимізує продуктивність [2] [3].
Отримання значень прапора:
-Ви можете отримати значення єдиного прапора функції за допомогою таких методів, як `Feature :: Active ('ім'я функції')` Щоб перевірити, чи ввімкнено (булева) або `функція :: значення ('ім'я функції')`, щоб отримати його значення, яке може бути булевим або будь-яким іншим типом даних (прапори багатих значень).
- Pannant також надає методи для отримання одразу декількох значень прапора функції, таких як `функція :: значення (['feature1', 'feature2'])` або `Feature :: all ()` Щоб отримати всі визначені функції для заданої області.
- Класи функцій можуть бути динамічно виявлені та зареєстровані, щоб переконатися, що вони включені при отримання всіх прапорів функцій [1] [2].
Підсумок:
Laravel Pannant вирішує значення прапора, запускаючи визначених користувачем логічні закриття, а потім зберігає ці вирішені значення або тимчасово в масиві пам’яті, або наполегливо в таблиці баз даних. Цей механізм зберігання дозволяє вимкнену ефективно отримувати стан прапора функцій на подальші запити без перерахунку, підтримуючи як прості, так і складні випадки використання, включаючи прапорці на одного користувача. За замовчуванням та рекомендованим підходом є використання драйвера бази даних для стійкого зберігання, особливо в багатосерверних або виробничих умовах, тоді як драйвер масиву підходить до перехідних або тестувальних сценаріїв [1] [2] [5].
Цитати:
[1] https://laravel.com/docs/11.x/pennant
[2] https://www.honeybadger.io/blog/a-guide-tofeature-flags-in-laravel/
[3] https://www.reddit.com/r/laravel/comments/10yto7q/laravel_pennant_simple_and_lecture_feature/
[4] https://redberry.international/laravel-pennant-feacure-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-in-2024-1phb
4
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5