Prestashop 调试挂钩
Prestashop debugging hooks
prestashop 中是否有一些跟踪挂钩调用的解决方案?特别是动作钩子,我需要检查钩子在哪里被调用以及钩子在做什么。很难找到钩子的函数。它们可以无处不在。
所有挂钩执行都是由 Hook
class 的函数 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());
...
在 q
函数中来自 Db
class (/classes/db/Db.php
).
prestashop 中是否有一些跟踪挂钩调用的解决方案?特别是动作钩子,我需要检查钩子在哪里被调用以及钩子在做什么。很难找到钩子的函数。它们可以无处不在。
所有挂钩执行都是由 Hook
class 的函数 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());
...
在 q
函数中来自 Db
class (/classes/db/Db.php
).