Usar State API para almacenar datos en Drupal 8

Imagen
Archivo de documentos

Drupal 8 nos ha proporcionado muchas nuevas funcionalidades, hemos pasado de tener unicamente variables para almacenar lo relacionado con configuración del sitio, información temporal o permanente relacionada con nuestro sitio web a disponer de muchos tipos diferentes de opciones, como State API.

En este caso vamos a ver State API, el cual es el mas cercano a lo que podrían ser las variables de Drupal 7, no debemos abusar de de ello, ya que esta pensado para almacenar datos estáticos.

Como usar State API:

Lo primero que necesitamos es obtener el servicio, se llama state y podemos obtenerlo fácilmente de una se la siguientes maneras:

$state = \Drupal::state();
$state = \Drupal::service('state');
 

Ahora que lo tenemos, podemos utilizarlo y realmente es muy sencillo, básicamente disponemos de los métodos "->set('nuestra_id', 'valor')", "->get('nuestra_id')" y "->delete('nuestra_id')".

//Almacenar un estado
$state->set('mi_clave_unica', 'value');

//Obtener un estado
$value = $state->get('mi_clave_unica');

//Borrar un estado
$state->delete('mi_clave_unica');

También tenemos la opción de realizarlo de manera múltiple:

//Almacenar varios estados
$state->setMultiple(['mi_clave_unica_uno' => 'valor_1', 'mi_clave_unica_dos' => 'valor_2']);

//Obtener varios estados
$values = $state->getMultiple(['mi_clave_unica_uno', 'mi_clave_unica_dos']);

//Borrar varios estados
$state->deleteMultiple(['mi_clave_unica_uno', 'mi_clave_unica_dos']);

Cuando se debe usar:

Hemos visto que es muy sencillo usar State API, pero no debemos abusar de el. Esta pensado y preparado para almacenar información relacionada con el estado del sitio y simple; no debería de almacenar información o datos con los que un humano interactuaría. Un ejemplo de lo que se debería de almacenar es la ultima ejecución de cron.

Drupal nunca modifica ni borrar los estados cada cierto tiempo, al contrario que por ejemplo, la cache, que cada cierto tiempo se borra (si llega su tiempo de expiración).

Una buena practica es utilizar como prefijo de nuestra clave el nombre de nuestro modulo para evitar conflictos con otras claves almacenadas.

Por ultimo, recordar que no debemos abusar de el y nunca utilizarlo para guardar por ejemplo, la configuración de un modulo.