如何在Yii中转储和打印变量以进行调试?我想使用var_dump()
或print_r()
。我尝试使用Yii::trace()
,但它在runtime/logs/app.log
中出现此错误而崩溃。它甚至没有告诉我代码中的哪一行它失败了。
2015-03-18 20:54:11 [::1][-][-][warning][yii'log'Dispatcher::dispatch] Unable to send log via yii'debug'LogTarget: Exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed'
in /cygdrive/c/Users/Chloe/workspace/AffiliateArbitrage/vendor/yiisoft/yii2-debug/LogTarget.php:58
Stack trace:
#0 /cygdrive/c/Users/Chloe/workspace/AffiliateArbitrage/vendor/yiisoft/yii2-debug/LogTarget.php(58): serialize(Array)
#1 /cygdrive/c/Users/Chloe/workspace/AffiliateArbitrage/vendor/yiisoft/yii2-debug/LogTarget.php(112): yii'debug'LogTarget->export(Array)
#2 /cygdrive/c/Users/Chloe/workspace/AffiliateArbitrage/vendor/yiisoft/yii2/log/Dispatcher.php(183): yii'debug'LogTarget->collect(Array, true)
#3 /cygdrive/c/Users/Chloe/workspace/AffiliateArbitrage/vendor/yiisoft/yii2/log/Logger.php(170): yii'log'Dispatcher->dispatch(Array, true)
#4 [internal function]: yii'log'Logger->flush(true)
#5 {main}
参考http://www.yiiframework.com/doc-2.0/guide-runtime-logging.html
因为您正在询问var_dump
和print_r
之类的问题,所以我可以建议内置助手进行此操作。它被称为yii''helpers''VarDumper。Yii::trace()用于记录跟踪消息。
VarDumper旨在取代有缺陷的PHP函数
var_dump
和print_r
。它可以正确地识别复杂的对象结构。它还有一个递归深度控制避免某些特殊变量的不确定递归显示。
VarDumper可以按如下方式使用,
VarDumper::dump($var);
就我个人而言,我不使用它,只是试了几次测试。
我认为最好使用Xdebug来达到这个目的。
另请参阅PsySH。
使用此:
<?php echo '<pre>'; print_r($model); exit; ?>
我用过这个,但我相信还有更好的方法。
Yii::warning('**********************', var_export($category,true));
config/web.php
'log' => [
...
'flushInterval' => 1, // for debug
'targets' => [
[
...
'exportInterval' => 1, // for debug - slow
],
],
],
使用此选项可以查看变量或对象数组。
use yii'helpers'VarDumper;
VarDumper::dump($variableArray , $dept = 10, $highlight = true);
详细信息,您可以阅读文档http://www.yiiframework.com/doc-2.0/yii-helpers-basevardumper.html#dump()-详细
您可以自己动手:在主索引页(back/index.php
或front/index.php
)中,将此代码添加到顶部的ob_start();
。然后定义2个功能以更好地调试
function dd($v){
ob_clean();
var_dump($v);
exit;
}
function dj($v){
ob_clean();
echo CJSON::encode($v);
exit;
}
并在主索引页的最后添加ob_end_flush();
。现在您可以调用dd($model)
或dj($model)
。你的垃圾车在那里工作。祝贺
您应该安装tracy''tracy。
dump($var);
bdump($var); // dump in bar
我写了一篇关于Yii2:中调试变量的问题的文章
为了简化和快速开发,我为那些使用Yii的人创建了一个助手。您可以直接调用
dd($var1, $var2, ….);
进行dump&管芯或用于转储数据的CCD_ 19。
详细信息和安装说明如下:https://dangnhsite.wordpress.com/2016/04/06/variable-debug-in-yii-2/