Chociaż cecha Dumpable
jest technicznie nowa w Laravelu 11, powiedziałbym, że konsoliduje ideę dump()
i w cechę dd()
wielokrotnego użytku, dzięki czemu klasy nie muszą ręcznie implementować jej osobno. Deweloperzy aplikacji i autorzy pakietów mogą również korzystać z tej nowej illumiate/support
cechy, aby łatwo dodawać metody debugowania w klasach łańcuchowych.
W Laravelu 10 już cieszymy się możliwością łączenia w łańcuch w różnych klasach frameworka, takich jak Carbon
, , zapytanie Builder
i TestResponse
:Jednak
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();
w Laravelu 10 dump()
metody and dd()
zostały stworzone ad hoc w każdej klasie osobno, podczas gdy w Laravelu 11 cały ten kod został skonsolidowany w cechę Dumpable, Stringable
której możemy użyć w ->dd()
->dump()
dowolnej klasie. Oto przykład z klasy Illuminate Carbon
w Laravelu 11:
use Illuminate\Support\Traits\Dumpable;
class Carbon extends BaseCarbon
{
use Conditionable, Dumpable;
// ...
}
Implementacja wygląda dump()
podobnie do poniższej cechy Dumpable. Jedyna różnica polega na dd()
tym, że kod zatrzyma wykonywanie i zakończy działanie:
public function dump(...$args)
{
dump($this, ...$args);
return $this;
}
Pozdrowienia dla Nuno Maduro za zaimplementowanie tej funkcji w Pull Request #47122 w celu oczyszczenia wewnętrznego użycia tych metod, ale także utorowało drogę aplikacjom i pakietom do korzystania z tej cechy.