Talvez você espere aprender que o variable_set é a maneira mágica de armazenar todos os tipos de dados estruturados em seu banco de dados, e que o variable_get é o caminho para divulgá-lo novamente. Infelizmente, não é.
As "variáveis persistentes", como costumam ser chamadas, destinam-se a pares de valores-chave relativamente simples que devem persistir em solicitações, usuários e sessões, geralmente até que o administrador do site altere o valor. Um bom exemplo é o nome do site.
Então, como isso funciona?
Quando o Drupal é inicializado, todas as variáveis são lidas no cache (se disponível) ou na tabela de variáveis. (Consulte variable_initialize para obter o código exato.) As variáveis armazenadas na $conf
variável global , uma enorme matriz. O Drupal faz isso porque é mais eficiente do que fazer uma consulta ao banco de dados toda vez que uma variável é necessária. (É também o motivo pelo qual o variable_set não é adequado para grandes quantidades de dados: eles seriam carregados em todas as solicitações!)
Sempre que você usa variable_get('variable_name', 'default_value')
, o nome da variável é pesquisado na matriz $ conf. Se existir, o valor será retornado; caso contrário, o valor padrão é retornado.
Finalmente, há um terceiro membro da família: variable_del . Como o nome indica, isso exclui uma variável da tabela de variáveis. Essa função é frequentemente usada em implementações hook_uninstall , excluindo variáveis quando um módulo é desinstalado.
Se você estiver procurando maneiras de armazenar estruturas de dados personalizadas mais complexas no banco de dados, consulte hook_schema e drupal_write_record ou use o sistema de entidades Drupal e a API de entidades .
variable_set()
faz com que o cache variável seja reconstruído, portanto, é algo geralmente reservado para dados que são bastante duradouros e consistentes, como configurações de administrador e similares. Ou, dito de outra forma, não deve ser usado em vez de ou como variáveis estáticas entre funções que mudam durante a criação da página.