web-dev-qa-db-ja.com

hook_update_n()を渡す引数は何ですか?

プログラムでカスタムブロックを作成するために使用しているカスタムモジュールmymoduleがあります。次のことを試みましたが、モジュールは正常に有効になりましたが、次の警告が表示されます。

渡される必要がある引数は何ですか?

Mymodule_update_8501()の引数1がありません

mymodule.install

function mymodule_install() {
  // Run update on install. 
  mymodule_update_8501();
}

function mymodule_update_8501(&$sandbox) {
  // Do something.
}
3
usernameabc

hook_update_N実装は通常、手動ではなくシステムによって呼び出されることを想定しています。

「インストール時に更新を実行する」と考える代わりに、「両方インストールと更新に対してアクションを実行する」と考えることもできます。そのためのかなり一般的なパターンは次のとおりです。

function MYMODULE_install() {
  _MYMODULE_install_something();
}

function MYMODULE_update_8501(&$sandbox) {
  _MYMODULE_install_something();
}

function _MYMODULE_install_something() {
  // Shared functionality here.
}

グローバル関数を使用する必要はありません。サービスに共有機能を実装して、代わりにそれを利用することができます。重要なのは、実行する必要のあるロジックを分離し、必要に応じて同じように使用することです。

現在のアプローチを続行したい場合は、初期化された変数を渡してください-使用していない場合でも問題ありません。コードが唯一の呼び出し元である場合は、サイドがありません-効果。

3
Clive