• Время чтения ~1 мин
  • 31.01.2024

Dumpable Несмотря на то, что типаж технически новый в Laravel 11, я бы сказал, что он консолидирует идею dump() и dd() в повторно используемый типаж, так что классам не нужно вручную реализовывать его отдельно. Разработчики приложений и авторы пакетов также могут извлечь выгоду из этой новой illumiate/support функции, чтобы легко добавлять методы отладки в цепные классы.

В Laravel 10 мы уже наслаждаемся возможностью связывать в a или ->dump() с различными классами фреймворка, такими как Carbon, , запрос 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() методы and dd() создавались ad hoc в каждом классе отдельно, Stringableтогда как в Laravel 11 весь этот код был консолидирован в типаж Dumpable, который мы можем использовать в ->dd() любом классе. Вот пример из класса Illuminate Carbon в Laravel 11:

use Illuminate\Support\Traits\Dumpable;

class Carbon extends BaseCarbon
{
    use Conditionable, Dumpable;

    // ...
}

Реализация dump() выглядит следующим образом в типаже Dumpable. Единственное отличие заключается dd() в том, что код остановит выполнение и выйдет:

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

    return $this;
}

Shout-out to Nuno Maduro за реализацию этой функции в Pull Request #47122 для очистки внутреннего использования этих методов, но также проложил путь для приложений и пакетов, использующих этот типаж.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297