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 →
NativePHP v4: Build Native iOS and Android UI in Blade image

NativePHP v4: Build Native iOS and Android UI in Blade

Read article
Laravel Lock: Distributed Locks for Models and Routes image

Laravel Lock: Distributed Locks for Models and Routes

Read article
Laravel Image Responses: Serve Resized Images From Routes image

Laravel Image Responses: Serve Resized Images From Routes

Read article
Pause All Laravel Queues During a Deploy image

Pause All Laravel Queues During a Deploy

Read article
Laravel Terminal UI for the artisan dev Command image

Laravel Terminal UI for the artisan dev Command

Read article
Pause All Queues and a New artisan dev UI in Laravel 13.25 image

Pause All Queues and a New artisan dev UI in Laravel 13.25

Read article