I have an array of 320 arrays, while regular var_dump
shows me exactly 320 elements with all nested elements, Laravel's dd
helper truncates the nested element at index 147 and all the further elements are truncated with no option to expand them, see the example below
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]
Why is it limited to 147 full records and how to increase the limit? The related topic Is Laravels' DD helper function working properly? doesn't actually explain the limits.
This is pretty consistent behavior, I've tested with Laravel 5.2 and php7 on
Everywhere got exactly the same cut on element #147. Using CLI php artisan tinker
outputs the same cut
...
"name" => "dccode" ] 147 => array:17 [
"total_unconfirmed_subscribers" => 0
16 ] 148 => array:17 [ 17]
...
Prior to version 5.0 laravel's dd()
function looked as follows:
function dd()
{
array_map(function($x) { var_dump($x); }, func_get_args()); die;
}
Since 5.0 it looks like this:
function dd()
{
array_map(function ($x) {
(new Dumper)->dump($x);
}, func_get_args());
die(1);
}
The Dumper
is using symfony's VarCloner
which is extending the AbstractCloner
. This class has a $maxItems
attribute set to 2500. See: https://github.com/symfony/var-dumper/blob/master/Cloner/AbstractCloner.php#L125
You have 17 items per array. Multiply it by 147 and you get 2499. That's why your array at key 147 is truncated after it's first item.
If you'd like to increase that you'd need to override laravel's Dumper
class (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);
}
}
My suggestions for you is to create a custom helpers file in bootstrap folder
1) follows the following answer to create a custom helper function for your Laravel application, if it is too complicated, you can skip the following step, use my function in step 2 as any normal function and simply call it >> https://stackoverflow.com/a/28290359/10539212
2) I would like to give some credits to this guy, I follow his guide to create my own ddd function >> https://tighten.co/blog/a-better-dd-for-your-tdd
use Illuminate\Support\Debug\HtmlDumper;
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;
function ddd()
{
$args = func_get_args();
$defaultStringLength = -1;
$defaultItemNumber = -1;
$defaultDepth = -1;
foreach ($args as $variable) {
$dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper();
$cloner = new VarCloner();
$cloner->setMaxString($defaultStringLength);
$cloner->setMaxItems($defaultItemNumber);
$dumper->dump($cloner->cloneVar($variable)->withMaxDepth($defaultDepth));
}
die(1);
}
-1 = no limit (easy to customize in this way)
So, now when you use this ddd function, you can get the complete output of normal dd function. I think this approach is better than overwriting any existing function. But be careful, since now variables with any number of depth will be displayed completely, you may experience longer loading time. Hope it helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With