2017-08-31 3 views
0

Est-ce qu'une solution est disponible dans prestashop pour le suivi des crochets? En particulier les hooks d'actions, je dois vérifier où les hooks sont appelés et ce que font les hooks. Il est difficile de trouver des fonctions pour les crochets. Ils peuvent être partout.Crochets de débogage Prestashop

+0

Voulez-vous savoir quels hooks sont appelés? – joseantgv

+0

Dans mon magasin parfois DB contient des doubles rangées. Insérer sont en fonction de crochet. Donc, parfois, ils doivent courir deux fois. Je ne peux pas trouver quand et où. Et deuxième cas je trouve HOOK :: EXEC, mais je ne peux pas trouver où est la fonction pour cela. Ils doivent être dans un module. –

Répondre

2

Toutes les exécutions de hook sont effectuées par la fonction exec de la classe Hook. Vous pouvez ajouter une trace de débogage au début de cette fonction:

public static function exec($hook_name, $hook_args = array(), $id_module = null, $array_return = false, $check_exceptions = true, 
          $use_push = false, $id_shop = null) 
{ 
    $logger = new FileLogger(0); 
    $logger->setFilename(_PS_ROOT_DIR_.'/log/debug.log'); 
    $e = new Exception; 
    $logger->logDebug('Hook '.$hook_name.' called from:'); 
    $logger->logDebug($e->getTraceAsString()); 
    .... 

Cela va créer un journal de débogage à /log/debug.log et affiche les informations sur qui appellent ce crochet.

Encore mieux si vous substituez cette fonction pour le faire;)


Vous pouvez également déboguer tous les insérer dans votre DB.

Ajouter ce code

protected function q($sql, $use_cache = true) 
{ 
    $logger = new FileLogger(0); 
    $logger->setFilename(_PS_ROOT_DIR_.'/log/sql.log'); 
    $e = new Exception; 
    $logger->logDebug('SQL '.$sql.' executed from:'); 
    $logger->logDebug($e->getTraceAsString()); 
    ... 

en q fonction de Db classe (/classes/db/Db.php).

+0

@Marcin Jaworski réponse éditée pour vous aider à trouver qui fait l'insertion – idnovate