Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Yii中转储变量以进行调试?_Php_Yii_Yii2 - Fatal编程技术网

Php 如何在Yii中转储变量以进行调试?

Php 如何在Yii中转储变量以进行调试?,php,yii,yii2,Php,Yii,Yii2,如何在Yii中转储和打印变量以进行调试?我想使用var\u dump()或print\u r()。我试图使用Yii::trace(),但它在运行时/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'

如何在Yii中转储和打印变量以进行调试?我想使用
var\u dump()
print\u r()
。我试图使用
Yii::trace()
,但它在
运行时/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}
参考文献

我用过这个,但我相信有更好的方法

Yii::warning('**********************', var_export($category,true));
config/web.php
    'log' => [
        ...
        'flushInterval' => 1, // for debug
        'targets' => [
            [
                ...
                'exportInterval' => 1, // for debug - slow
            ],
        ],
    ],

因为您正在询问有关
var\u dump
print\u r
之类的问题,所以我可以建议内置帮助程序。它叫。用于记录跟踪消息

VarDumper旨在取代有缺陷的PHP函数
var\u dump
print\u r

它可以正确地识别一个数据库中递归引用的对象 复杂的对象结构。它还有一个递归的深度控制来 避免某些特殊变量的不确定递归显示

VarDumper可按如下方式使用:

就我个人而言,我没有使用它,只是尝试了几次测试

我认为出于这个目的最好使用


另请参见。

我在Yii 2中写了一篇关于调试变量问题的文章:

因为为了简单和快速的开发,我为那些使用Yii的人创建了一个助手。您只需调用
dd($var1,$var2,…)用于转储和模具或
d($var1,$var2,…)用于转储数据

有关详细信息和安装说明,请参见:

使用此:

<?php echo '<pre>'; print_r($model); exit; ?>

使用此选项可以查看变量或对象数组

使用yii\helpers\VarDumper

VarDumper::dump($variablerray,$dept=10,$highlight=true)

要了解详细信息,您可以阅读文档 你可以自己做: 在主索引页(
back/index.php
front/index.php
)中,将此代码添加到顶部的
ob_start()。然后定义2个函数以更好地调试


并添加
ob_end_flush()在主索引页的最后。现在您可以调用
dd($model)
dj($model)
。你的垃圾车在那里工作。恭喜你

太好了!老派调试!除了在顶部浮动的愚蠢的默认导航条会模糊输出…在转储后添加
退出
死亡
,与常规的
变量转储
打印
一样。添加了到另一个调试器的链接,这可能会对您有更多帮助。Psy SH看起来非常整洁,但可能有问题用它。Composer没有安装任何可执行文件。不仅如此,还不清楚如何将shell连接到web服务器。它说,如果添加调试行,它将落入一个shell中,但是PHP在后台运行在Apache中!它将如何显示一个外壳?没有提到为远程调试设置端口或任何内容。echo“”;打印(型号);出口您好,欢迎来到SO。如果你意识到你忘记了什么,或者犯了一个错误,你应该给出你的答案,而不是留下评论。注释不是所有人都可以阅读的,它们可能会被删除,并且不允许正确的代码格式。另一个用户已经建议进行编辑以修复它:请查看它,如果您认为需要,请进一步编辑您的答案,然后删除评论。非常感谢。在哪里可以看到消息?实际上,我想在Yii命令的日志文件中几乎立即看到消息。这对我很有帮助,非常感谢
<?php echo '<pre>'; print_r($model); exit; ?>
function dd($v){
    ob_clean(); 
    var_dump($v);
    exit;
}
function dj($v){
    ob_clean(); 
    echo CJSON::encode($v);
    exit;
}