Débogage des crochets qui ont tiré?

9

Je suis un peu nouveau dans le développement de modules.

Existe-t-il un moyen de générer actuellement les hooks exécutés sur certains nœuds?

Cela se ferait-il avec xdebug?

chrisjlee
la source

Réponses:

9

À moins que vous n'obteniez une erreur fatale (ou un écran vide), il est assez facile d'obtenir une liste des modules qui seront invoqués lorsqu'un hook spécial est appelé:

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

Vous pouvez utiliser des trucs comme xDebug pour suivre le flux de Drupal, mais cela peut être écrasant, surtout si vous êtes nouveau sur Drupal.

googletorp
la source
1
Si vous souhaitez essayer le débogage et ne voulez pas passer des heures à le configurer, vous pouvez essayer Quickstart . C'est une machine virtuelle et avec drush, il est très facile de configurer un site, puis de mettre votre module, d'importer dans Netbeans et de déboguer.
Whisky
1
Cela ne montrerait-il pas simplement tous les modules qui implémentent un hook particulier, pas tous les hooks que Drupal a appelés jusqu'à ce point? La dernière est la façon dont j'ai lu la demande de @ chrisjlee.
mpdonadio
1
@MPD Il ne montrera pas seulement quels modules implémentent un hook mais aussi l'ordre dans lequel ils sont appelés. Si le contexte est ce qui se passe avant / après l'appel du hook de mon module, ce qui précède suffira. Si vous vouliez savoir si hook foo est appelé à un certain moment dans le flux d'exécution, ce sera assez difficile à comprendre, car Drupal est si complexe. Surtout pour un nouveau développeur. Je ne sais pas si c'est ce dont OP a besoin, mais c'est probablement plus utile que toutes les suggestions de xDebug de toute façon.
googletorp