web-dev-qa-db-ja.com

モジュール関数を2つのファイルに分割した後、未定義の関数が呼び出されるのはなぜですか?

現在、私のモジュールには2つのメインファイルがあります。

  • menu_perm.module
  • menu_perm.admin.inc

.infoに2番目のファイルを追加しました。

ファイル[] = menu_perm.admin.inc

キャッシュをクリアしました。

テストクラス(PHPUnit)ファイルで、Drupal:

drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

テスト関数内でフォーム送信関数を手動で呼び出し、以下のエラーで終了します:

未定義の関数menu_perm_user_form_submit()の呼び出し

関数はmenu_perm.admin.incにあります。

これの前にすべてが大丈夫でした。

ここで何が悪いのですか?

4
Codium

files[]はクラス/インターフェースの自動読み込みでのみ機能し、任意のPHPファイルを含みません。ドキュメントでは

Drupalは動的ロードコードレジストリをサポートするようになりました。これをサポートするには、すべてのモジュールが.infoファイル内のクラスまたはインターフェイス宣言を含むコードファイルを宣言する必要があります

.moduleファイルの先頭に次のような行を追加することで回避できます。

require_once DRUPAL_ROOT . '/sites/all/modules/my_module/my_module.admin.inc';
3
Clive