Лучший способ удалить все переменные при удалении модуля

9

Я пишу модуль, который записывает несколько переменных (три, четыре переменные для каждого типа контента и другие).

Какой метод я должен использовать, чтобы удалить их на hook_uninstall?

Безопасно ли выполнять запрос, ища переменные "mymodule_ *"?

Или я должен выполнить цикл для типов контента и поиска переменных, поэтому многократно вызывать variable_del?

Arrubiu
источник
Вместо того, чтобы создавать переменные с именами для каждого типа контента, вы могли бы использовать структурированные переменные, которые имеют известное имя и ключи для каждого типа контента?
Крис Берджесс

Ответы:

10

Переменные кэшируются, поэтому удаление вручную возможно, если вы аннулируете этот кэш, например

db_delete('variable')
  ->condition('name', 'mymodule_%', 'LIKE')
  ->execute();

cache_clear_all('variables', 'cache_bootstrap');
Клайв
источник
Этот запрос в порядке, при условии, что никто не создал модуль, который находится внутри пространства имен вашего модуля - например, если это сделает Views, он будет заменять переменные, принадлежащие таким модулям, как Views Block или Views MysiteCustom. Для этого примера это, вероятно, не будет серьезной проблемой, но вы поняли идею :)
Крис Берджесс
1

Вы также можете заглянуть в модуль Variable, который позволяет вашему модулю использовать реестр, настраивать значения по умолчанию и так далее.

Крис Берджесс
источник