Ограничения функции Laravel dd
у меня есть массив из 320 массивов, в то время как обычный var_dump
показывает мне ровно 320 элементов со всеми вложенными элементами, что Laravel-это dd
helper усекает вложенный элемент по индексу 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 полными записями и как увеличить лимит? Связанная тема вспомогательная функция DD Laravels работает правильно? не на самом деле объясните пределы.
Это довольно последовательное поведение, я тестировал с Laravel 5.2 и php7 на
- Linux (Laravel Forge, DO droplet, Ubuntu)
- Mac (Laravel Valet)
- окна (valet4windows)
везде получил точно такой же разрез на элементе #147. Использование CLI php artisan tinker
выводит тот же разрез
...
"name" => "dccode" ] 147 => array:17 [
"total_unconfirmed_subscribers" => 0
16 ] 148 => array:17 [ 17]
...
1 ответов
до версии 5.0 фреймворк Laravel это выглядела следующим образом:
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. Вот почему Ваш массив at key 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);
}
}