【问题标题】:Prestashop debugging hooksPrestashop 调试钩子
【发布时间】:2017-08-31 06:41:43
【问题描述】:

prestashop 中是否有一些用于跟踪 hooks 调用的解决方案?特别是动作钩子,我需要检查钩子在哪里调用以及钩子在做什么。很难找到钩子的功能。它们可以无处不在。

【问题讨论】:

  • 你想知道调用了哪些钩子吗?
  • 在我的商店中,有时 DB 包含双行。插入处于挂钩功能中。所以有时他们必须运行两次。我找不到时间和地点。第二种情况我找到了 HOOK::EXEC,但我找不到它的功能。它们必须在某个模块中。

标签: debugging prestashop action-hook


【解决方案1】:

所有的钩子执行都由来自Hook 类的函数exec 完成。您可以在此函数的开头添加调试跟踪:

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());
    ....

这将在 /log/debug.log 中创建一个调试日志,并显示有关谁调用此钩子的信息。

如果你重写这个函数会更好;)


您还可以调试数据库中的所有 INSERT。

添加此代码

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());
    ...

在 Db 类 (/classes/db/Db.php) 的 q 函数中。

【讨论】:

  • @Marcin Jaworski 回答已编辑以帮助您找到插入的人
猜你喜欢
  • 2015-02-01
  • 2017-05-22
  • 2018-06-01
  • 2017-08-19
  • 1970-01-01
  • 2021-10-21
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多