Использование класса PHP, определенного в файле модуля внутри реализации hook install()
Если реализация hook_install() моего модуля должна использовать класс, определенный в файле модуля, должен ли код сначала загрузить файл модуля с помощью drupal_load()?
Я бы подумал, что при вызове хука реестр Drupal еще не был обновлен, чтобы содержать какие-либо ссылки на классы PHP, определенные в модулях, используемых моим модулем, и которые указаны в файле .info. Я посмотрел на код Drupal, но не смог найти ни одного доказательство того, что, по моему мнению, делает Drupal.
Должен ли я использовать drupal_load()
или файл будет загружен автоматически при попытке создать экземпляр класса PHP, определенного в файле модуля? Отличается ли это от hook_update_N()
?
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);
// …
}
Или вы можете просто:
require_once dirname(__FILE__) . '/mymodule.module';
В любом месте вашего файла .install (лучше сверху).
Это не "путь Drupal", но он будет работать без проблем, что бы ни случилось.
Правильным методом было бы:
drupal_load('module', 'mymodule');
Внутри всех реализаций hook_install() и hook_update_N(), которым нужен класс. Но я не уверен, что это сработает во время установки.