[Laravel] 7.18.0がリリースされました

laravel/frameworkのv7.18.0がリリースされました。追加された機能について確認します。

Illuminate\Http\Client\PendingRequestクラスにwithMiddleware()メソッドが追加されました (#33315, b718d3a)

LaravelのHTTPクライアント(Httpファサード)に独自のミドルウェアが追加できるようになりました。

通信内容の確認、検査等が柔軟に行えるようになりました。

HTTPリクエストをDebugBarで追跡する例:

$client = new \Illuminate\Http\Client\PendingRequest();

$debugBar = new \DebugBar\StandardDebugBar();

// Get data collector.
$timeline = $debugBar->getCollector('time');

// Wrap the timeline.
$profiler = new \GuzzleHttp\Profiling\Debugbar\Profiler($timeline);

$client->withMiddleware(new \GuzzleHttp\Profiling\Middleware($profiler));

$client->send('GET', 'https://httpbin.org/status/200');

var_dump($timeline->collect());

Illuminate\View\ComponentAttributeBagクラスにMacroableトレイトが追加されました (#33354)

.クラス内の文字列が空では無いことを判定します。

Illuminate\View\ComponentAttributeBagクラスにfilter()whereStartsWith()thatStartWith()メソッドが追加されました (0abe2db, 07ee3e8)

作成される属性の情報を部分的に取り出せるようになりました。

$bag = new ComponentAttributeBag(['class' => 'font-bold', 'name' => 'test']);

 $this->assertSame('class="font-bold"', (string) $bag->whereStartsWith('class'));

Illuminate\Database\Eloquent\CollectionクラスにtoQuery()メソッドが追加されました (#33356, b718d3a)

CollectionからQueryBuilderへの変換ができるようになりました。

複数のレコードを更新したい場合に利用すると便利です。

Illuminate\View\ComponentAttributeBagクラスにfirst()メソッドが追加されました (#33358, 731b94f)

作成される属性の先頭を取り出せるようになりました。

$bag = new ComponentAttributeBag(['class' => 'font-bold', 'name' => 'test']);

$this->assertSame('font-bold', (string) $bag->whereStartsWith('class')->first());

スケジュールで使用できるパターンが追加されました (#33379)

以下の3つのメソッドが追加されました。

  • everyTwoMinutes()
  • everyThreeMinutes()
  • everyFourMinutes()

それぞれ2分毎、3分毎、4分毎に実行するメドッドです。

$schedule->job(SyncSomething::class)->cron('*/2 * * * *'); // every 2 minutes

// or, with this PR

$schedule->job(SyncSomething::class)->everyTwoMinutes();

詳しい変更については以下を確認してください。

Release v7.18.0 · laravel/framework · GitHub

© Xzxzyzyz