Laravel DB Options

L

Cada vez que tengo que trabajar en una aplicación desde cero, de las primeras cosas que preparo es un sistema para almacenar opciones, de forma que sea fácil generar y obtener configuraciones útiles para el sistema.

Para no tener que escribir de nuevo cada vez está funcionalidad e inspirado por un paquete que encontré similar, decidí generar un paquete propio que funcione de la misma forma en que yo trabajo.

Se instala normalmente con composer:

composer install mxrck/laravel-dboptions

Una vez instalado basta con utilizar el facade o el helper para guardar u obtener opciones del sistema

// Obtener una variable del sistema con un valor por defecto (en caso de no existir)
$somekey = Options::get( 'somekey', 'default value' );

// O usando el facade
$somekey = option('somekey');

De igual forma es posible crear opciones para otros modelos, como un usuario por ejemplo, estos son llamados «context» y es posible hacer fallback a una opción del sistema o un valor por defecto, tu decides:

$user = User::find(1); // obtenemos un usuario

// Opción del sistema, supongamos un color por ejemplo
$color = option('color', 'blue'); // Color puede ser el guardado o blue en caso de que no exista ninguno guardado

$user_color = $user->option('color', 'red'); // Nos devuelve el color del usuario o red en caso de que no haya ninguno guardado

/* Si quisieramos que en caso de no encontrar un color para el usuario guardado se usara el guardado por el sistema solo debemos hacer fallback: */

$user_color = $user->optionFallback('color', 'red');
/* 
Esta línea actuará de la siguiente forma:
Buscará una la opción "color" del usuario, en caso de no encontrarla devolverá la opción del sistema "color" y en caso de que no exista una opción color en el sistema guardada devolverá "red" como valor por defecto
 */

El paquete tiene más opciones y formas de utilizarse, pueden encontrarlo en el siguiente enlace:

https://github.com/Mxrck/laravel-dboptions

Acerca del autor

Mxrck

Ingeniero en Sistemas Computacionales, amante de la tecnología, los videojuegos, la programación.

Siempre aprendiendo algo nuevo.

"Always Thinking"

Categorías

Etiquetas