卸载模块时删除所有变量的最佳方法


9

我正在编写一个模块,其中写入了多个变量(每个内容类型分别为三个,四个变量,以及其他)。

我应该使用哪种方法在hook_uninstall上删除它们?

执行搜索“ mymodule_ *”变量的查询是否安全?

还是应该为内容类型和搜索变量循环,所以多次调用variable_del?


您可以使用结构名称为每个内容类型已知的名称和键的结构化变量,而不是为每种内容类型创建命名的变量?
克里斯·伯吉斯

Answers:


10

变量被缓存,因此,只要您使该缓存无效,就可以手动删除,例如

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

cache_clear_all('variables', 'cache_bootstrap');

只要没有人创建一个位于您模块名称空间内的模块,此查询就可以了-例如,如果Views这样做,它将显示属于Views Block或Views MysiteCustom之类的模块的变量。对于本示例来说,这可能不是主要问题,但您会明白:)
Chris Burgess 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.