Laravel 11 引入了 Dumpable 特性
最后更新于 作者: Paul Redmond
虽然 Dumpable
特性在技术上是 Laravel 11 中的 新 特性,但我会说它将 dump()
和 dd()
的概念整合到一个可重用的特性中,以便类不必单独手动实现它。应用程序开发人员和包作者也可以从这个新的 illumiate/support
特性中受益,它可以轻松地在可链式类中添加调试方法。
在 Laravel 10 中,我们已经可以将 ->dd()
或 ->dump()
链式到各种框架类中,例如 Carbon
、Stringable
、查询 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()
和 dd()
方法是在每个类中单独创建的,而在 Laravel 11 中,所有这些代码都被整合到 Dumpable 特性中,我们可以在任何类中使用它。以下是从 Laravel 11 中的 Illuminate Carbon
类中的一个示例
use Illuminate\Support\Traits\Dumpable; class Carbon extends BaseCarbon{ use Conditionable, Dumpable; // ...}
dump()
的实现看起来像 Dumpable 特性中的以下代码。与 dd()
唯一的区别是代码将停止执行并退出
public function dump(...$args){ dump($this, ...$args); return $this;}
感谢 Nuno Maduro 在 Pull Request #47122 中实现了此功能,以清理这些方法的内部使用,但也为应用程序和包使用此特性铺平了道路。