Depuración de ganchos que dispararon?

9

Soy algo nuevo en el desarrollo de módulos.

¿Hay alguna manera de generar actualmente qué ganchos se han ejecutado en ciertos nodos?

¿Se haría esto con xdebug?

chrisjlee
fuente

Respuestas:

9

A menos que obtenga un error fatal (o una pantalla en blanco), es bastante fácil obtener una lista de módulos que se invocarán cuando se llame a un enlace especial:

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

Podría usar cosas como xDebug para rastrear el flujo de Drupal, pero esto puede ser abrumador, especialmente si es nuevo en Drupal.

googletorp
fuente
1
Si desea probar la depuración y no quiere pasar horas configurándolo, puede probar el Inicio rápido . Es una máquina virtual y con drush es muy fácil configurar un sitio, luego ponerlo en su módulo, importarlo en Netbeans y ejecutar la depuración.
Whisky
1
¿No mostraría esto todos los módulos que implementan un enlace particular, no todos los enlaces que Drupal ha llamado hasta ese momento? Lo siguiente es cómo leí la solicitud de @ chrisjlee.
mpdonadio
1
@MPD No solo mostrará qué módulos implementan un enlace sino también el orden en que se los llama. Si el contexto es lo que sucede antes / después de que se llame al gancho de mi módulo, lo anterior será suficiente. Si desea averiguar si se llama a hook foo en un momento determinado del flujo de ejecución, será bastante difícil de resolver, ya que Drupal es tan complejo. Especialmente para un nuevo desarrollador. No estoy seguro de si esto es lo que OP necesita, pero de todos modos probablemente sea más útil que cualquier sugerencia de xDebug.
googletorp