Использование класса PHP, определенного в файле модуля внутри реализации hook install()


Если реализация hook_install() моего модуля должна использовать класс, определенный в файле модуля, должен ли код сначала загрузить файл модуля с помощью drupal_load()?

Я бы подумал, что при вызове хука реестр Drupal еще не был обновлен, чтобы содержать какие-либо ссылки на классы PHP, определенные в модулях, используемых моим модулем, и которые указаны в файле .info. Я посмотрел на код Drupal, но не смог найти ни одного доказательство того, что, по моему мнению, делает Drupal.

Должен ли я использовать drupal_load() или файл будет загружен автоматически при попытке создать экземпляр класса PHP, определенного в файле модуля? Отличается ли это от hook_update_N()?

 1
Author: kiamlaluno, 2011-05-10

2 answers

Нет необходимости, он уже загружен. Проверка http://api.drupal.org/api/drupal/includes--module.inc/function/module_enable/7

if ($existing->status == 0) {
  // Load the module's code.
  drupal_load('module', $module);
  module_load_install($module);
  // …
}
 3
Author: kiamlaluno, 2011-05-23 03:43:47

Или вы можете просто:

require_once dirname(__FILE__) . '/mymodule.module';

В любом месте вашего файла .install (лучше сверху).

Это не "путь Drupal", но он будет работать без проблем, что бы ни случилось.

Правильным методом было бы:

drupal_load('module', 'mymodule');

Внутри всех реализаций hook_install() и hook_update_N(), которым нужен класс. Но я не уверен, что это сработает во время установки.

 1
Author: Pierre, 2011-05-22 20:16:55