Prestashop 调试钩子

Mar*_*ski 2 debugging prestashop action-hook

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

idn*_*ate 6

所有挂钩处决被funcion完成execHook类。您可以在此函数的开头添加调试跟踪:

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());
    ....
Run Code Online (Sandbox Code Playgroud)

这将在 /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());
    ...
Run Code Online (Sandbox Code Playgroud)

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