回答:
変数を追跡variable_del()し、の実装内に適切な呼び出しを追加しますhook_uninstall()。
function foo_uninstall() {
variable_del('foo_variable1');
variable_del('foo_variable2');
}
hook_uninstall()インストールフックと同様に、モジュールの.installファイル(などfoo.install)に存在する必要があります。
名前空間の衝突があなたに噛み付くように戻ってくるので、モジュール名が前に付いているすべての変数を削除するべきではありません。たとえば、モジュールの名前がの場合foo、variablesテーブルの前にが付いてfoo_いるすべての変数をポーリングするだけでよいと考えるかもしれません。しかし、という名前のモジュールを作成するとfoo_awesomeどうなりますか?私の変数も削除します。それはいいことではありません。
更新:このブログ投稿の議論をさらに掘り下げてみると、Drupalコアが使用する方法を採用するために、 Dave Reidからこのアイデアに出くわしました。
hook_variables())メソッドは、コアがそれを行う方法ではありません。それは、彼が自分のいくつかのモジュールで行う方法です。Drupalの8では、この問題はで解決されるかもしれないコアの添加hook_variable_info()フック。