我有一个包含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(拉瑞维尔锻造、DO droplet、Ubuntu)
- Mac(拉勒韦尔代客泊车)
- Windows(valet4Windows)
在元素#147上的任何地方都得到了完全相同的剪切。使用CLI php artisan tinker
输出相同的剪切
...
"name" => "dccode" ] 147 => array:17 [
"total_unconfirmed_subscribers" => 0
16 ] 148 => array:17 [ 17]
...
4条答案
按热度按时间gmol16391#
在5.0版之前,laravel的
dd()
函数如下所示:从5.0开始,它看起来像这样:
Dumper
正在使用symfony的VarCloner
,该VarCloner
正在扩展AbstractCloner
。此类的$maxItems
属性设置为2500。请参阅:https://github.com/symfony/var-dumper/blob/master/Cloner/AbstractCloner.php#L125每个数组有17个元素,乘以147得到2499,这就是为什么数组在第一个元素之后被截断。
如果你想增加这个值,你需要覆盖laravel的
Dumper
类(https://github.com/laravel/framework/blob/5.2/src/Illuminate/Support/Debug/Dumper.php):wkftcu5l2#
我的建议是在bootstrap文件夹中创建一个自定义助手文件
1)我按照下面的答案为您的Laravel应用程序创建一个自定义助手函数,如果它太复杂,您可以跳过下面的步骤,使用第2步中的my函数作为任何普通函数,只需调用它〉〉https://stackoverflow.com/a/28290359/10539212
2)我想给予这个家伙一些学分,我按照他的指南创建我自己的ddd函数〉〉https://tighten.co/blog/a-better-dd-for-your-tdd
-1 =无限制(以这种方式易于自定义)
所以,现在当你使用这个ddd函数时,你可以得到正常dd函数的完整输出。我认为这种方法比覆盖任何现有的函数要好。但是要小心,因为现在任何深度的变量都会完整显示,你可能会经历更长的加载时间。希望它能有所帮助。
mwngjboj3#
我的建议是在 VarDumper 组件中添加一个 handler。
在您的AppServiceProvider.php中:
class
声明之前)*boot()
方法内)*根据Symfony's VarDumper component documentation:
***setMaxItems()***配置将克隆超过最小嵌套深度的最大项目数。使用广度优先算法对项目进行计数,以便较低级别的项目比嵌套较深的项目具有更高的优先级。指定-1将删除此限制。
在文档中,您可以看到定制克隆器、转储器和脚轮组件的其他方法。
c9qzyr3d4#
**Laravel的
dd()
**函数用于在浏览器中打印/转储一些值,然后停止执行(跳过dd()
之后给出的所有其他代码)dd()
函数的替代项。有两种选择。
1.如果要在浏览器中打印单个值然后停止执行。
echo $您的值;
exit(退出);
1.如果要在浏览器中打印一些数组值然后停止执行。
打印_r($您的数组);
exit(退出);