News

Laravel 11 Introduces the Dumpable Trait

Published
Laravel 11 Introduces the Dumpable Trait image

While the Dumpable trait is technically new in Laravel 11, these I would say that it consolidates the idea of dump() and dd() into a reusable trait so that classes don’t have to manually implement this separately. Application developers and package authors can also benefit from this new illumiate/support trait to easily add debugging methods in chainable classes.

In Laravel 10, we already enjoy being able to chain in a ->dd() or ->dump() into various framework classes, such as Carbon, Stringable, the query Builder, and 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();

However, in Laravel 10, the dump() and dd() methods were created ad-hoc in each class separately, whereas, in Laravel 11, all that code was consolidated into the Dumpable trait we can use in any class. Here's an example from the Illuminate Carbon class in Laravel 11:

use Illuminate\Support\Traits\Dumpable;
 
class Carbon extends BaseCarbon
{
use Conditionable, Dumpable;
 
// ...
}

The implementation of dump() looks like the following in the Dumpable trait. The only difference with dd() is that the code will stop execution and exit:

public function dump(...$args)
{
dump($this, ...$args);
 
return $this;
}

Shout-out to Nuno Maduro for implementing this feature in Pull Request #47122 to clean up internal usage of these methods, but also paved the way for apps and packages to utilize this trait.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article