ใน magento 1.x เราสามารถใช้ backtrace ได้
echo Varien_Debug::backtrace(true, true); exit;
เราจะใช้สถานที่นี้ใน Magento 2 ได้อย่างไร?
ใน magento 1.x เราสามารถใช้ backtrace ได้
echo Varien_Debug::backtrace(true, true); exit;
เราจะใช้สถานที่นี้ใน Magento 2 ได้อย่างไร?
คำตอบ:
คุณสามารถใช้debug_backtrace()
ตามที่ฉันเพิ่มไว้ด้านล่าง
$debugBackTrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
foreach ($debugBackTrace as $item) {
echo @$item['class'] . @$item['type'] . @$item['function'] . "\n";
}
สำหรับการอ้างอิงโปรดตรวจสอบ
dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php
ในคลาสตัวบันทึกของ Magento 2 debug_backtrace
วิธีนี้ไม่ได้ใช้โดยตรง
ดังนั้นวีโอไอพี 2 ในการทำ backtrace คือใช้Magento\Framework\Debug
คลาส (ซึ่งเทียบเท่ากับVarien_Debug
คลาสM1 ) และเรียกใช้backtrace()
เมธอด:
/**
* 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);
}
ในแอปพลิเคชัน PHP ใด ๆ ที่คุณสามารถทำได้:
$e = new \Exception();
echo '<pre>';
print_r($e->getTraceAsString());
exit;
เนื่องจากการเว้นวรรคชื่อใน M2 คุณต้องใช้new \Exception();
แทนเพียงnew Exception();
print_r((new \Exception())->getTraceAsString());
(ตั้งแต่ PHP 5.4 ดังนั้นปลอดภัยที่จะใช้ใน M2)
คุณสามารถใช้ฟังก์ชัน PHP debug_backtraceเพื่อดีบักใน Magento
ใช้รหัสต่อไปนี้ในวีโอไอพีเพื่อติดตามปัญหาโดยใช้ debug_backtrace
foreach (debug_backtrace() as $_stack) {
echo ($_stack["file"] ? $_stack["file"] : '') . ':' .
($_stack["line"] ? $_stack["line"] : '') . ' - ' .
($_stack["function"] ? $_stack["function"] : '').'<br/><hr/>';
}
exit();
คุณจะเห็น backtrace ดีบั๊กที่จะช่วยให้คุณสามารถกำหนดแหล่งที่มาของปัญหาและคุณจะได้รับความคิดวิธีการแก้ไขปัญหา
@
เพิกเฉยต่อคำเตือนเช่นเมื่อ'class'
ไม่มี)