Laravel Pennant магазины и извлекает значения флагов функций, используя гибкую систему хранения, которая поддерживает два основных драйвера: драйвер массива в памяти и постоянный драйвер базы данных.
Механизмы хранения:
- Драйвер массива: этот драйвер хранит разрешенные значения функций в массиве в памяти. Он быстрый, но временный, что означает, что значения флага сохраненных признаков существуют только во время текущего жизненного цикла запроса и потом теряются. Это полезно для простых или временных вариантов использования, когда настойчивость не требуется.
- Драйвер базы данных (по умолчанию): вымпел может сохранить значения флага функций в реляционной базе данных, в частности, в таблице «функции», созданной путем запуска миграций Пеннана. Этот драйвер сохраняет разрешенные значения флага функций постоянно, что позволяет разделить значения по нескольким запросам и серверам. Он идеально подходит для приложений, работающих на нескольких серверах или без серверных сред. Драйвер базы данных также использует кэш в памяти во время одного запроса, чтобы избежать повторных запросов базы данных для того же флага функций, повышая производительность [1] [2] [5].
Как определяются и решены функции:
- Флаги функций определяются с использованием закрытия, которые содержат логику, чтобы определить, является ли функция активной или нет. Эти закрытия могут принимать параметры, такие как аутентифицированный пользователь, что позволяет для флагов общего пользования (например, включение функции только для пользователей администратора).
- Когда флаг функции сначала проверяется на предмет данной области (например, пользователь), Пеннант выполняет закрытие для разрешения значения функции. Это разрешенное значение затем сохраняется в настроенном драйвере хранения (массив или база данных).
- При последующих проверках на наличие той же функции и сфера прицела вырванца извлекает сохраненное значение из драйвера хранилища вместо пересчитывания его, что оптимизирует производительность [2] [3].
Получение значений флага функций:
-Вы можете получить значение одного флага функций, используя такие методы, как `feature :: active ('feature-name')` Чтобы проверить, включено ли он (Boolean) или `feature :: value ('feature-name')` для получения его значения, которое может быть логическим или любым другим типом данных (Flags Rich-Value).
- Вымпела также предоставляет методы для извлечения нескольких значений флагов функций одновременно, таких как `feature :: values (['feature1', 'feature2'])` или `feature :: all ()` для получения всех определенных функций для данной области.
- Классы функций могут быть динамически обнаружены и зарегистрированы, чтобы убедиться, что они включены при получении всех флагов функций [1] [2].
Краткое содержание:
Laravel Pennant разрешает значения флагов функций, запустив пользовательские логические закрытия, а затем сохраняет эти разрешенные значения либо временно в массиве в памяти, либо постоянно в таблице баз данных. Этот механизм хранения позволяет вырванцам эффективно извлекать состояния флагов признаков по последующим запросам без пересчитывания, поддерживая как простые, так и сложные варианты использования, включая флаги с общеобразованием на одного пользователя. Подход по умолчанию и рекомендуемым-использовать драйвер базы данных для постоянного хранения, особенно в многосерочных или производственных средах, в то время как драйвер массива соответствует сценариям переходного или тестирования [1] [2] [5].
Цитаты:
[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-fecture-flaging-made-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-danage-feature-flags-with-laravel-pennant-in-2024-1phb
[7] https://stackoverflow.com/questions/77751003/laravel-pennant-store-against-session-for-a-a-s-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5