Что связывает хук Drupal с конкретным модулем?
В Drupal 7 каждый модуль ядра имеет файл «api».
$ ls modules/*/*.api.php
modules/aggregator/aggregator.api.php modules/openid/openid.api.php
modules/block/block.api.php modules/overlay/overlay.api.php
modules/comment/comment.api.php modules/path/path.api.php
modules/contextual/contextual.api.php modules/rdf/rdf.api.php
modules/dashboard/dashboard.api.php modules/search/search.api.php
modules/field/field.api.php modules/shortcut/shortcut.api.php
modules/field_ui/field_ui.api.php modules/simpletest/simpletest.api.php
modules/file/file.api.php modules/system/system.api.php
modules/filter/filter.api.php modules/system/theme.api.php
modules/help/help.api.php modules/taxonomy/taxonomy.api.php
modules/image/image.api.php modules/trigger/trigger.api.php
modules/locale/locale.api.php modules/update/update.api.php
modules/menu/menu.api.php modules/user/user.api.php
modules/node/node.api.php
Каждый из этих файлов содержит функцию, которая никогда (?) не вызывается, но документирует существование хука, который могут реализовать другие модули (включая сторонние).
File: modules/path/path.api.php
function hook_path_delete($path) {
db_delete('mytable')
->condition('pid', $path['pid'])
->execute();
}
Мой вопрос: что связывает конкретный хук с конкретным модулем? Почему хук path_delete
включен в файл path.api.php
? Почему хук entity_view
включен в файл system.api.php
? Является ли это просто произвольной организацией постфактум, или в системе Drupal есть что-то, что привязывает конкретный хук к конкретному модулю? Или что-то другое?