In magento 1.x possiamo usare backtrace come
echo Varien_Debug::backtrace(true, true); exit;
Come possiamo usare questa funzione in Magento 2?
In magento 1.x possiamo usare backtrace come
echo Varien_Debug::backtrace(true, true); exit;
Come possiamo usare questa funzione in Magento 2?
Risposte:
Puoi usare debug_backtrace()
come ho aggiunto di seguito.
$debugBackTrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
foreach ($debugBackTrace as $item) {
echo @$item['class'] . @$item['type'] . @$item['function'] . "\n";
}
Per riferimento consultare
dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php
Nelle classi logger di Magento 2, il debug_backtrace
metodo non viene utilizzato direttamente.
Quindi il modo Magento 2 di fare backtrace è usare la Magento\Framework\Debug
classe (che è l'equivalente della Varien_Debug
classe M1 ) e chiamare il backtrace()
metodo:
/**
* Prints or returns a backtrace
*
* @param bool $return return or print
* @param bool $html output in HTML format
* @param bool $withArgs add short arguments of methods
* @return string|bool
*/
public static function backtrace($return = false, $html = true, $withArgs = true)
{
$trace = debug_backtrace();
return self::trace($trace, $return, $html, $withArgs);
}
In qualsiasi applicazione PHP puoi semplicemente fare:
$e = new \Exception();
echo '<pre>';
print_r($e->getTraceAsString());
exit;
A causa della spaziatura dei nomi in M2, è necessario utilizzare new \Exception();
anziché semplicementenew Exception();
print_r((new \Exception())->getTraceAsString());
(dal PHP 5.4, così sicuro da usare in M2)
È possibile utilizzare la funzione PHP debug_backtrace per eseguire il debug in Magento.
Usa il seguente codice in magento per tracciare il problema usando debug_backtrace
foreach (debug_backtrace() as $_stack) {
echo ($_stack["file"] ? $_stack["file"] : '') . ':' .
($_stack["line"] ? $_stack["line"] : '') . ' - ' .
($_stack["function"] ? $_stack["function"] : '').'<br/><hr/>';
}
exit();
Vedrai il backtrace di debug che ti permetterà di definire l'origine del problema e avrai un'idea di come risolvere il problema.
@
ignorare gli avvisi, per esempio quando'class'
non esiste)