Php 如何在Yii中转储变量以进行调试?
如何在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'
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;
}