编程

Laravel 11 引入 Dumpable Trait

861 2024-02-04 01:00:00

虽然从技术上讲 Dumpable trait 是 Laravel 11 新增的,我想说的是,它将 dump()dd() 的思想整合为一个可重用的 trait,这样类就不必单独手动实现。应用开发人员和包作者也可以从这种新的 /support trait 中受益,以便在可链接类中轻松添加调试方法。

在 Laravel 10 中,我们已经很喜欢能够将 ->dd()->dump() 中链接到各种框架类中,如 CarbonStringable、查询生成器和 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()dd() 方法在每个类中单独创建的,而在 Laraver 11 中,所有这些代码都整合到了我们可以在任何类中使用的 Dumpable trait 特性中。以下是 Laravel 11 中的 Illuminate Carbon 类的一个示例:

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

实现 dump() 和如下的 Dumpable trait 很相似。dd() 唯一的不同是代码会停止执行并退出:

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