Незважаючи на те, що ця Dumpable
риса є технічно новою в Laravel 11, я б сказав, що вона консолідує ідею dump()
та dd()
функцію багаторазового використання, так що класам не потрібно вручну реалізовувати це окремо. Розробники додатків і автори пакетів також можуть скористатися цією новою illumiate/support
рисою, щоб легко додавати методи налагодження в ланцюжкові класи.
У Laravel 10 ми вже насолоджуємося можливістю з'єднувати в ланцюжок в a ->dd()
або ->dump()
в різні класи фреймворків, такі як Carbon
, , запит Builder
і :TestResponse
use Illuminate\Support\Carbon;
$time = Carbon::now()
->addDay()
->addMinute()
->addSecond();
// dumping before adding a minute and second
$time = Carbon::now()
->addDay()
->dump()
->addMinute()
->dump()
->addSecond();
Однак у Laravel 10 dump()
методи and dd()
були створені ad hoc в кожному класі окремо, тоді як у Laravel 11 весь цей код був об'єднаний у ознаку Dumpable, Stringable
яку ми можемо використовувати в будь-якому класі. Ось приклад з класу Illuminate Carbon
в Laravel 11:
use Illuminate\Support\Traits\Dumpable;
class Carbon extends BaseCarbon
{
use Conditionable, Dumpable;
// ...
}
Реалізація виглядає dump()
наступним чином у рисі Dumpable. Єдина відмінність полягає dd()
в тому, що код зупинить виконання та завершить роботу:
public function dump(...$args)
{
dump($this, ...$args);
return $this;
}
Дякую Нуно Мадуро за реалізацію цієї функції у Запиті на Пул #47122 для очищення внутрішнього використання цих методів, а також проклав шлях для використання цієї риси у додатках та пакунках.