[Laravel] 5.7.23がリリースされました
laravel/frameworkのバージョン5.7.23がリリースされました。追加された機能について確認します。
AbstractPaginator
クラスにgetOptions()
メソッドが追加されました
ページネーションを作成する際に利用しているオプションを取得できるようになりました。
クラスを継承しているLengthAwarePaginator
、Paginator
についても同様のメソッドが利用できます。
$p = new Paginator($array = ['item1', 'item2', 'item3'], 2, 2, ['path' => 'http://website.com/test']);
$options = $p->getOptions(); // -> ['path' => 'http://website.com/test']
DetectsLostConnections
トレイとにエラーメッセージCommunication link failure
が追加されました
EloquentBuilder
のscope
に関するメソッドをorWhere
として直接利用するためのクラスが追加されました
データベースクラスにIlluminate\Database\Eloquent\HigherOrderBuilderProxy
が追加され、orWhere()
メソッド実行時にコールバックで渡していたクエリをチェイン可能になりました。
内部の動作はCollection
クラスと同様にマジックメソッドを利用してHigherOrderBuilderProxy
を実行しています。
scope
メソッドとor
演算子を組み合わせる際のコールバックの記述が不要になります。
// scopeFoo, scopeBar, scopeBaz on the Model class
$query->foo()->orWhere(function (Builder $query) {
$query->bar();
})->orWhere(function (Builder $query) {
$query->baz();
});
// after
$query->foo()->orWhere->bar()->orWhere->baz();
// scopeFoo, scopeBar, scopeBaz on the Model class
$query->foo()->orWhere(function (Builder $query) {
$query->bar();
})->baz();
// after
$query->foo()->orWhere->bar()->baz();
同じような処理はCollecton
にも実装されていますが、初めて見る場合には実装が把握しづらいと思われます。
こちら(#27281)の内容を一読しておくとよいでしょう。
アプリケーションパスを設定できるようになりました
bootstrap/app.php
にて指定可能です。
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
$app->useAppPath(__DIR__ . '/../src/App');
ログ設定のStackDriver
でWhatFailureGroupHandler
が利用可能になりました
例えばログをSlack
に通知している場合に、ネットワーク等の問題で通知できなかった場合にエラーを無視して次のハンドラを実行します。
本番環境などでホワイトスクリーンを防ぐのに非常に役に立ちます。
monolog/02-handlers-formatters-processors.md at master · Seldaek/monolog · GitHub
利用する際にはconfig/logging/php
へignore_exceptions
を追加します。
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'ignore_exceptions' => true,
],
詳しい変更については以下を確認してください。