Отладка крюков, которые сработали?

9

Я немного новичок в разработке модулей.

Есть ли способ в настоящее время выводить, какие хуки были запущены на определенных узлах?

Будет ли это сделано с xdebug?

chrisjlee
источник

Ответы:

9

Если вы не получите фатальную ошибку (или пустой экран), довольно просто получить список модулей, которые будут вызываться, когда вызывается специальный хук:

$modules = module_implements($hook);
foreach ($modules as $key =>  $module) {
  $function = $module . '_' . $hook;
  if (!function_exists($function)) {
    unset($modules[$key]);
  }
}
// $modules is now an array containing all the modules that will be invoked by $hook.

Вы можете использовать такие вещи, как xDebug для отслеживания потока Drupal, но это может быть ошеломляющим, особенно если вы новичок в Drupal.

googletorp
источник
1
Если вы хотите попробовать отладку и не хотите тратить часы на ее настройку, вы можете попробовать Quickstart . Это виртуальная машина, и с помощью drush очень легко настроить сайт, затем вставить свой модуль, импортировать в Netbeans и нажать кнопку «Отладка».
Виски
1
Разве это не просто показывает все модули, которые реализуют определенный хук, а не все хуки, которые Drupal вызывал до этого момента? Позже я прочитал запрос @ chrisjlee.
mpdonadio
1
@MPD Это не только покажет, какие модули реализуют ловушку, но также и порядок их вызова. Если контекст - это то, что происходит до / после вызова хука моего модуля, выше будет достаточно. Если вы хотите выяснить, вызывается ли ловушка foo в определенный момент в потоке выполнения, выяснить это будет довольно сложно, поскольку Drupal настолько сложен. Особенно для нового разработчика. Я не уверен, что это именно то, что нужно OP, но это, вероятно, более полезно, чем любые предложения xDebug.
googletorp