Таблица variable
Таблица variable является одной из ключевых системных таблиц в Drupal. Она служит централизованным хранилищем для всех переменных системы, модулей и тем. Переменные представляют собой пары "ключ-значение", где ключом является имя переменной, а значением - сериализованные данные конфигурации.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
name |
varchar(128) |
Первичный ключ таблицы. Уникальное имя переменной. Имена обычно имеют префиксы, соответствующие модулям (например, node_preview, user_picture_dimensions).
|
value |
longblob |
Значение переменной в сериализованном виде. Для хранения используется функция serialize() PHP, что позволяет сохранять сложные структуры данных (массивы, объекты).
|
Как это работает
При установке Drupal создает таблицу variable и заполняет ее начальными значениями системных переменных. Каждый модуль при установке добавляет в эту таблицу свои переменные с значениями по умолчанию через hook_install().
Drupal предоставляет API для работы с переменными:
- variable_get($name, $default) - получение значения переменной
- variable_set($name, $value) - установка значения переменной
- variable_del($name) - удаление переменной
При вызове variable_get() система сначала проверяет статический кеш в памяти, затем кеш БД, и только если переменная не найдена - обращается к таблице variable. Это значительно повышает производительность.
При изменении переменной через variable_set() значение сериализуется и сохраняется в таблице, после чего очищаются соответствующие кеши.
Важно отметить, что в Drupal 8 и выше данная таблица была заменена системой конфигурации Configuration API, которая использует YAML-файлы и таблицы config и cache_config.
Пример SQL-запроса
Получить все переменные, связанные с модулем user:
SELECT name, value
FROM variable
WHERE name LIKE 'user_%'
ORDER BY name;
Получить значение конкретной переменной:
SELECT value
FROM variable
WHERE name = 'site_name';