2017-08-31 123 views
0

是prestashop跟蹤掛鉤調用的一些解決方案嗎?特別是我需要檢查鉤子在哪裏調用的鉤子和鉤子在做什麼。很難找到鉤子的函數。他們可以無處不在。Prestashop調試掛鉤

+0

你想知道哪個鉤子被調用? – joseantgv

+0

在我的商店有時DB包含雙行。插入處於掛鉤功能。所以有時他們必須跑兩次。我無法找到何時何地。第二種情況是我找到HOOK :: EXEC,但是我找不到它的功能。他們必須在某個模塊中。 –

回答

2

所有鉤子執行都是通過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()); 
    .... 

這將創造/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()); 
    ... 

+0

@Marcin Jaworski回答編輯,以幫助您找到誰插入 – idnovate