Di magento 1.x kita bisa menggunakan backtrace like
echo Varien_Debug::backtrace(true, true); exit;
Bagaimana kita bisa menggunakan fasilitas ini di Magento 2?
Di magento 1.x kita bisa menggunakan backtrace like
echo Varien_Debug::backtrace(true, true); exit;
Bagaimana kita bisa menggunakan fasilitas ini di Magento 2?
Jawaban:
Anda dapat menggunakan debug_backtrace()
seperti yang saya tambahkan di bawah ini.
$debugBackTrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
foreach ($debugBackTrace as $item) {
echo @$item['class'] . @$item['type'] . @$item['function'] . "\n";
}
Untuk referensi silakan periksa
dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php
Di kelas logger dari Magento 2, debug_backtrace
metode ini tidak digunakan secara langsung.
Jadi cara Magento 2 melakukan backtrace adalah dengan menggunakan Magento\Framework\Debug
kelas (yang setara dengan Varien_Debug
kelas M1 ) dan memanggil backtrace()
metode:
/**
* 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);
}
Dalam aplikasi PHP apa pun, Anda cukup melakukan:
$e = new \Exception();
echo '<pre>';
print_r($e->getTraceAsString());
exit;
Karena spasi nama dalam M2, Anda harus menggunakan new \Exception();
bukan hanyanew Exception();
print_r((new \Exception())->getTraceAsString());
(karena PHP 5.4, sangat aman digunakan dalam M2)
Anda dapat menggunakan fungsi debug_backtrace PHP untuk debugging di Magento.
Gunakan kode berikut di magento untuk melacak masalah dengan menggunakan debug_backtrace
foreach (debug_backtrace() as $_stack) {
echo ($_stack["file"] ? $_stack["file"] : '') . ':' .
($_stack["line"] ? $_stack["line"] : '') . ' - ' .
($_stack["function"] ? $_stack["function"] : '').'<br/><hr/>';
}
exit();
Anda akan melihat penelusuran balik debug yang akan memungkinkan Anda untuk menentukan sumber masalah dan Anda akan mendapatkan ide bagaimana memperbaiki masalah tersebut.
@
mengabaikan peringatan, misalnya ketika'class'
tidak ada)