gpt4 book ai didi

php - Laravel dd 函数限制

转载 作者:可可西里 更新时间:2023-11-01 12:28:16 26 4
gpt4 key购买 nike

我有一个包含 320 个数组的数组,而常规 var_dump 向我显示了 320 个包含所有嵌套元素的元素,Laravel 的 dd 助手截断了索引处的嵌套元素 147 并且所有其他元素都被截断,无法扩展它们,请参见下面的示例

  146 => array:17 [▼
"total_unconfirmed_subscribers" => 0
"total_subscribers_subscribed_yesterday" => 0
"unique_list_id" => "24324"
"http_etag" => ""fbb6febfca8af5541541ea960aaedb""
"web_form_split_tests_collection_link" => "https://api.com/1.0/"
"subscribers_collection_link" => "https://api.com/1.0/"
"total_subscribers_subscribed_today" => 0
"id" => 23432
"total_subscribed_subscribers" => 0
"total_unsubscribed_subscribers" => 0
"campaigns_collection_link" => "https://api.com/1.0/"
"custom_fields_collection_link" => "https://api.com/1.0/accounts"
"self_link" => "https://api.com/1.0/accounts"
"total_subscribers" => 0
"resource_type_link" => "https://api.com/1.0/#list"
"web_forms_collection_link" => "https://api.com/"
"name" => "dccode"
]
147 => array:17 [▼
"total_unconfirmed_subscribers" => 0
…16
]
148 => array:17 [ …17]
149 => array:17 [ …17]

为什么限制为 147 条完整记录以及如何提高限​​制?相关话题Is Laravels' DD helper function working properly?实际上并没有解释这些限制。

这是非常一致的行为,我已经在 Laravel 5.2 和 php7 上进行了测试

  • Linux(Laravel Forge、DO Droplet、Ubuntu)
  • Mac(Laravel 代客)
  • Windows (valet4windows)

在元素 #147 上,所有地方都得到了完全相同的切割。使用 CLI php artisan tinker 输出相同的剪切

...
"name" => "dccode" ] 147 => array:17 [
"total_unconfirmed_subscribers" => 0
16 ] 148 => array:17 [ 17]
...

最佳答案

在 5.0 版本之前,laravel 的 dd() 函数如下所示:

function dd()
{
array_map(function($x) { var_dump($x); }, func_get_args()); die;
}

从 5.0 开始它看起来像这样:

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

die(1);
}

Dumper 使用的是 symfony 的 VarCloner,它扩展了 AbstractCloner。此类的 $maxItems 属性设置为 2500。请参阅:https://github.com/symfony/var-dumper/blob/master/Cloner/AbstractCloner.php#L125

每个数组有 17 个项目。将它乘以 147 得到 2499。这就是为什么键 147 处的数组在第一项之后被截断的原因。

如果你想增加你需要覆盖 laravel 的 Dumper 类(https://github.com/laravel/framework/blob/5.2/src/Illuminate/Support/Debug/Dumper.php):

public function dump($value)
{
if (class_exists(CliDumper::class)) {
$dumper = 'cli' === PHP_SAPI ? new CliDumper : new HtmlDumper;

$cloner = new VarCloner();
$cloner->setMaxItems(5000);
$dumper->dump($cloner->cloneVar($value));
} else {
var_dump($value);
}
}

关于php - Laravel dd 函数限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39011241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com