0
是prestashop跟蹤掛鉤調用的一些解決方案嗎?特別是我需要檢查鉤子在哪裏調用的鉤子和鉤子在做什麼。很難找到鉤子的函數。他們可以無處不在。Prestashop調試掛鉤
是prestashop跟蹤掛鉤調用的一些解決方案嗎?特別是我需要檢查鉤子在哪裏調用的鉤子和鉤子在做什麼。很難找到鉤子的函數。他們可以無處不在。Prestashop調試掛鉤
所有鉤子執行都是通過funcion exec
從Hook
類完成的。您可以在這個函數的開頭加上調試跟蹤:
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調試日誌,將顯示有關誰該掛鉤的信息。
即使你重寫這個函數來進行更好;)
您也可以調試所有的插入你的數據庫。
在q
函數從Db
類(/classes/db/Db.php
)添加這個代碼
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());
...
。
@Marcin Jaworski回答編輯,以幫助您找到誰插入 – idnovate
你想知道哪個鉤子被調用? – joseantgv
在我的商店有時DB包含雙行。插入處於掛鉤功能。所以有時他們必須跑兩次。我無法找到何時何地。第二種情況是我找到HOOK :: EXEC,但是我找不到它的功能。他們必須在某個模塊中。 –