¿Cómo configuro variables para variable_get ()?

9

Estoy tratando de entender variable_get(). Leí hasta ahora que puedes establecer variables en settings.php usando la $confmatriz y recuperarlas más tarde en código usando variable_get(). He leído que también puede usar variable_get()para recuperar valores de la base de datos.

¿Como funciona esto?
¿Hay una tabla que se construye automáticamente?
¿Cómo establecería variables si esta característica es posible?

cthrucode
fuente

Respuestas:

25

Tal vez espere aprender que variable_set es la forma mágica de almacenar todo tipo de datos estructurados en su base de datos, y que variable_get es la forma de obtenerlos nuevamente. Lamentablemente no lo es.

Las "variables persistentes", como se las denomina a menudo, están destinadas a pares clave-valor relativamente simples que deberían persistir en las solicitudes, los usuarios y las sesiones, a menudo hasta que el administrador del sitio cambie el valor. Un buen ejemplo es el nombre del sitio.

¿Entonces, cómo funciona?

Cuando Drupal se inicia, todas las variables se leen del caché (si está disponible) o de la tabla de variables. (Ver variable_initialize para el código exacto). Las variables y almacenadas en la $confvariable global , una gran matriz. Drupal hace esto porque es más eficiente que hacer una consulta a la base de datos cada vez que se necesita una variable. (También es la razón por la cual variable_set no es adecuado para grandes bloques de datos: ¡se cargarían en cada solicitud!)

Cada vez que usa variable_get('variable_name', 'default_value'), el nombre de la variable se busca en la matriz $ conf. Si existe, se devuelve el valor; de lo contrario, se devuelve el valor predeterminado.

Finalmente, hay un tercer miembro de la familia: variable_del . Como su nombre lo indica, esto elimina una variable de la tabla de variables. Esta función se usa a menudo en implementaciones de hook_uninstall , eliminando variables cuando se desinstala un módulo.

Si está buscando formas de almacenar estructuras de datos personalizadas más complejas en la base de datos, consulte hook_schema y drupal_write_record , o use el sistema de entidades Drupal y la API de entidad .

marcvangend
fuente
77
Otra nota importante es que variable_set()hace que la memoria caché variable se reconstruya, por lo que es algo que generalmente se reserva para datos que son bastante duraderos y consistentes, como la configuración de administración y similares. O, dicho de otra manera, no debe usarse en lugar de variables estáticas o similares, entre funciones que cambian durante la construcción de la página.
Jimajamma
5

Si está utilizando Drush (muy recomendable), puede emitir drush vget > variables.txtdesde la línea de comandos para crear un archivo de texto con una lista de todas las variables actuales y sus valores. Del mismo modo, puede usar drush vsetpara cambiar el conjunto de cualquier variable a un valor diferente.

Ver GitHub para más detalles acerca variable-get, variable-sety otros comandos útiles.

MRP
fuente
3

Para establecer variables, usaría variable_set () . Luego puede recuperarlos usando variable_get () . Debe familiarizarse con el sitio API de Drupal.

Las variables, si están almacenadas, se pueden encontrar en la tabla de variables.

Triskelion
fuente
No está claro en la discusión anterior cómo configurar la variable en el módulo personalizado. Entonces, ¿cómo configurar la variable desde el módulo personalizado?
Fawwad