Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ¿Cómo almacena y recuperan los valores de la bandera de la característica de Laravel?


¿Cómo almacena y recuperan los valores de la bandera de la característica de Laravel?


Laravel Pennant almacena y recupera los valores de la bandera de características utilizando un sistema de almacenamiento flexible que admite dos controladores principales: un controlador de matriz en memoria y un controlador de base de datos persistente.

Mecanismos de almacenamiento:

- Controlador de matriz: este controlador almacena los valores de la bandera de características resueltas en una matriz en memoria. Es rápido pero transitorio, lo que significa que los valores del indicador de características almacenados existen solo durante el ciclo de vida de solicitud actual y se pierden después. Esto es útil para casos de uso simples o temporales donde no se requiere persistencia.

- Controlador de base de datos (predeterminado): Pennant puede persistir los valores del indicador de características en una base de datos relacional, específicamente en una tabla de 'características' creada mediante la ejecución de migraciones de Pennant. Este controlador almacena los valores del indicador de características resueltas de manera persistente, lo que permite que los valores se compartan en múltiples solicitudes y servidores. Es ideal para aplicaciones que se ejecutan en múltiples servidores o entornos sin servidor. El controlador de la base de datos también utiliza un caché en memoria durante una sola solicitud para evitar consultas de bases de datos repetidas para el mismo indicador de características, mejorando el rendimiento [1] [2] [5].

Cómo se definen y se resuelven las banderas de características:

- Los indicadores de características se definen utilizando cierres que contienen la lógica para determinar si una característica está activa o no. Estos cierres pueden aceptar parámetros como el usuario autenticado, permitiendo indicadores de características de alcance (por ejemplo, habilitar una función solo para usuarios administrativos).

- Cuando se verifica primero un indicador de características para un alcance dado (como un usuario), Pennant ejecuta el cierre para resolver el valor de la función. Este valor resuelto se almacena luego en el controlador de almacenamiento configurado (matriz o base de datos).

- En las verificaciones posteriores de la misma característica y alcance, Pennant recupera el valor almacenado del controlador de almacenamiento en lugar de recalcularlo, lo que optimiza el rendimiento [2] [3].

Recuperación de valores de bandera de características:

-Puede recuperar el valor de un solo indicador de características utilizando métodos como `Feature :: Active ('Feature-Name')` Para verificar si está habilitado (booleano) o `Feature :: Value ('Feature-Name')` para obtener su valor, que puede ser booleano o cualquier otro tipo de datos (banderas de valor rico).

- Pennant también proporciona métodos para recuperar múltiples valores de bandera de características a la vez, como `Feature :: Values ​​(['características1', 'características2'])` o `características :: all ()` para obtener todas las características definidas para un alcance dado.

- Las clases de características se pueden descubrir y registrarse dinámicamente para garantizar que se incluyan al recuperar todas las banderas de características [1] [2].

Resumen:

Laravel Pennant resuelve los valores del indicador de características ejecutando cierres lógicas definidas por el usuario y luego almacena estos valores resueltos temporalmente en una matriz en memoria o persistentemente en una tabla de base de datos. Este mecanismo de almacenamiento permite a Pennant recuperar eficientemente los estados de bandera de características en las solicitudes posteriores sin recalcular, lo que respalda los casos de uso simples y complejos que incluyen banderas de alcance por usuario. El enfoque predeterminado y recomendado es usar el controlador de la base de datos para el almacenamiento persistente, especialmente en entornos de producción múltiple o de producción, mientras que el controlador de matriz se adapta a escenarios transitorios o de prueba [1] [2] [5].

Citas:
[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/larel/comments/10yto7q/laravel_pennant_simple_and_lightweight_feature/
[4] https://redberry.international/laravel-pennant-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
[7] https://stackoverflow.com/questions/77751003/laravel-pennant-store-gainst-session-for-a-b-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5