Ganchos de depuração que dispararam?

9

Sou um pouco novo no desenvolvimento de módulos.

Existe uma maneira de exibir atualmente quais ganchos foram executados em determinados nós?

Isso seria feito com o xdebug?

chrisjlee
fonte

Respostas:

9

A menos que você receba um erro fatal (ou tela em branco), é muito fácil obter uma lista de módulos que serão chamados quando um gancho especial for chamado:

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

Você pode usar coisas como xDebug para rastrear o fluxo do Drupal, mas isso pode ser esmagador, especialmente se você é novo no Drupal.

googletorp
fonte
11
Se você deseja tentar a depuração e não deseja passar horas configurando-a, tente o Início rápido . É uma máquina virtual e, com o drush, é muito fácil configurar um site, depois colocar no seu módulo, importar no Netbeans e clicar em debug.
Whisky
11
Isso não mostraria apenas todos os módulos que implementam um gancho específico, nem todos os ganchos que o Drupal chamou até esse momento? Quanto mais tarde é como leio a solicitação de @ chrisjlee.
mpdonadio
11
@MPD Ele não apenas mostra quais módulos implementam um gancho, mas também a ordem em que são chamados. Se o contexto for o que acontece antes / depois que o gancho do meu módulo for chamado, o acima será suficiente. Se você quiser descobrir se o hook foo é chamado em um determinado momento no fluxo de execução, será muito difícil descobrir, já que o Drupal é muito complexo. Especialmente para um novo desenvolvedor. Não tenho certeza se é disso que o OP precisa, mas provavelmente é mais útil do que qualquer sugestão de xDebug.
googletorp