Debugowanie uruchomionych haków?

9

Jestem trochę nowy w tworzeniu modułów.

Czy istnieje sposób, aby obecnie wyprowadzać, jakie haki zostały uruchomione w niektórych węzłach?

Czy można to zrobić za pomocą xdebug?

chrisjlee
źródło

Odpowiedzi:

9

O ile nie wystąpi błąd krytyczny (lub pusty ekran), dość łatwo jest uzyskać listę modułów, które będą wywoływane, gdy zostanie wywołany specjalny hak:

$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.

Możesz użyć rzeczy takich jak xDebug, aby śledzić przepływ Drupala, ale może to być przytłaczające, szczególnie jeśli jesteś nowym użytkownikiem Drupala.

googletorp
źródło
1
Jeśli chcesz spróbować debugować i nie chcesz spędzać godzin na konfigurowaniu, możesz wypróbować Szybki start . Jest to maszyna wirtualna i dzięki drush bardzo łatwo jest skonfigurować stronę, a następnie włożyć moduł, zaimportować w Netbeans i nacisnąć debugowanie.
Whisky
1
Czy nie pokazałoby to po prostu wszystkich modułów, które implementują konkretny hak, a nie wszystkich haków, które Drupal wywołał do tego momentu? Później czytam prośbę @ chrisjlee.
mpdonadio
1
@MPD Nie tylko pokaże, które moduły implementują hook, ale także kolejność ich wywoływania. Jeśli kontekstem jest to, co dzieje się przed / po wywołaniu haka mojego modułu, powyższe wystarczy. Jeśli chcesz dowiedzieć się, czy hook foo jest wywoływany w pewnym momencie w przepływie wykonania, trudno będzie go rozgryźć, ponieważ Drupal jest tak złożony. Specjalnie dla nowego programisty. Nie jestem pewien, czy tego właśnie potrzebuje OP, ale prawdopodobnie jest to bardziej przydatne niż sugestie xDebug.
googletorp