什么会导致print_r和/或var_dump调试变量失败?

 回__复卷轴 发布于 2023-01-29 10:16

我正在尝试调试Magento中的PayPal审核流程.每次我尝试转储以下变量时,我都会得到一个白页:

//the variable declaration:
$shippingAddress = $this->getShippingAddress();

//the dump that breaks the page:
 ';print_r($shippingAddress);echo '
'; ?>

我还尝试在页面上使用一个变量,该变量用于if语句之外的其他内容.

//this variable displays results
';print_r($billingBlock->setShowAsShippingCheckbox(true)->toHtml());echo '
'; ?> //however, this one does not: ';print_r($billingBlock);echo ''; ?>

我只是想知道什么可能导致我的var_dump打破页面?如果我无法转储它,如何查看对象中的内容?

1 个回答
  • 首先,PHP从不"只是白页".当你得到一个空白屏幕时,这意味着PHP的执行因某种原因而停止.但是,除非您的服务器已配置为不记录错误,否则PHP错误日志或Magento异常日志应该有错误.

    就您的具体问题而言,许多Magento的对象都包含对大量信息的引用 - 有时引用是循环的.PHP var_dumpprint_r函数将盲目地遵循这些循环引用并尝试打印出所有内容.这最终导致PHP使用的内存超过了memory_limitini设置所允许的内存,并且执行暂停.

    大多数PHP专业人员使用xDebug扩展来解决这个问题.xDebug扩展已修改var_dump,将限制转储的信息量,从而防止上述内存限制问题.的xdebug.var_display_max_children,xdebug.var_display_max_dataxdebug.var_display_max_depthINI设置是你要调整,如果Xdebug的仍然无法与内存的限制问题帮助的人.(一些PHP发行版最初设置得太高)

    如果这不可能,那么对你var_dump的一点点谨慎仍然有帮助.

    用它来计算变量类型

    var_dump(get_class($thing));
    

    如果它是Magento对象,请使用它来查看其数据键

    var_dump(array_keys($thing->getData()));
    

    然后输出单个数据成员

    var_dump($thing->getData('key_name'));
    var_dump($thing->getKeyName()));
    

    2023-01-29 10:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有