【问题标题】:Laravel: does exists a equivalent of var_export($var, True) helper?Laravel:是否存在等效于 var_export($var, True) 助手?
【发布时间】:2017-03-25 20:39:05
【问题描述】:

通常可以方便地调试变量的转储

Laravel 的

dd($v); 
dump($v);

非常有用。

我想知道是否有这样一个函数将变量作为返回的字符串转储而不是打印出来。

就像在 php 中一样:

var_export($var, TRUE) 

注意:我要求的是一个特定的 Laravel 函数,而不是 PHP 内置函数 var_dump、var_export 或 print_r。我已经知道了。

【问题讨论】:

  • 你看过print_r吗? $string = print_r($var, TRUE)
  • 虽然不是具体问题的答案...您使用过 xdebug 吗?花几分钟来安装/配置它是非常值得的。
  • 你想准确调试什么样的变量,为什么不打印出来?
  • 考虑日志记录......或警告(通过某种渠道)错误,异常......你会构建错误字符串。是的,xdebug 是即时检查对象的好方法。
  • Laravel 没有这样的功能。您可以查看dd() 的来源并尝试提出您自己的。此外,如果日志记录是最终目标,您是否尝试过传递数据(无论您要作为参数传递给数组中的dd(),作为第二个参数传递给Log::info()?见laravel.com/docs/master/errors#logging“上下文信息”

标签: php laravel


【解决方案1】:

你可以使用pre标签来格式化你的输出

echo "<pre>";
print_r($data);
echo "</pre>";

已编辑

如果你想将转储存储在一个变量中,我想你可以像下面那样做

导入use Illuminate\Support\Debug\Dumper;

$data = User::all(); // change it according to your requirement

array_map(function ($data) {
    (new Dumper)->dump($data);
}, func_get_args());

【讨论】:

  • 也许我的问题并不清楚,但我要求的是 Laravel 特定的功能。不是PHP。其次,我想要一个将转储作为字符串存储在变量中的函数,而不是在 STDOutput 上打印 var 结构。
  • 更新为dd()函数的实际内容
  • 查看dd() 的来源是个好主意,但我认为这仍会打印结果,而 OP 希望将输出分配给变量。
  • @koalaok Laravel 附带的 dump() 函数实际上是 Symphony2 组件的一部分。你可以alter it's behavior to dump into a string而不是打印输出。
【解决方案2】:

我找不到任何东西,所以我求助于这个:

    $string = var_export($data, true);
    Log::info($string);

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多