リリースノート
- Laravel 5.8
- ##Eloquent HasOneThrough Relationship
- 自動ルックアップ モデル戦略
- PSR-16 キャッシュ仕様
- Token Guard トークン ハッシュ アルゴリズム
- ##改善された電子メール バリデータ
- ##デフォルトのスケジュールタスクのタイムゾーン
- 中間テーブル/ピボットモデルイベント
- アーティザンコールの改善
- モック/スパイ テスト補助メソッド
- Eloquent リソース キーの永続性
- 高次の orWhere Eloquent メソッド
- Artisan Serve の改善
- テンプレート ファイル マッピング
- ##DynamoDB キャッシュ/セッション ドライバー Carbon 2.0 のサポート
- Pheanstalk 4.0 サポート
リリースノート
- バージョン管理スキーム
- サポート戦略
- Laravel 5.8
バージョン管理スキーム
Laravel のバージョン管理スキームでは、
Laravel フレームワークや他のコンポーネントをアプリケーションまたはパッケージ内から参照する場合は、常にメジャー バージョン番号.マイナー バージョン番号.リビジョン番号
という規則が使用されます。マイナー バージョン フレームワークは 6 か月ごと (2 月と 8 月) にリリースされますが、リビジョンは毎週リリースされる場合があり、リビジョン には重大な変更は含まれません。5.7.*
メジャー バージョン間のリリースには何年もかかることが多く、各リリースはフレームワーク アーキテクチャと基礎となる構造の根本的な変更を表します。現在、メジャー バージョン番号を開発する予定はありません。 サポート ポリシー5.5 などの LTS リリースの場合、2 年間のバグ修正と 3 年間のセキュリティ修正が提供されます。これらのバージョンでは、最長のサポートとメンテナンスが提供されます。一般バージョンの場合、6 か月間のバグ修正と 1 年間のセキュリティ修正のみが提供されます。などのバージョン制約を使用する必要があります。これは、Laravel のマイナー バージョンには重大な変更が含まれているためです。 。ただし、1 日以内に更新できるように最善を尽くします。
バージョン リリース時期 バグ修正期限 セキュリティ修正期限 5.0 2015 年 2 月 4 日 2015 年 8 月 4 日 2016 年 2 月 4 日 5.1 (LTS) 2015 年 6 月 9 日 2017 年 6 月 9 日 2018 年 6 月 9 日日 5.2 2015 年 12 月 21 日 2016 年 6 月 21 日 2016 年 12 月 21 日 5.3 ##5.42016 年 8 月 23 日 2017 年 9 月 23 日 2017 年 8 月 23 日 5.5 (LTS)2017 年 1 月 24 日 2017 年 7 月 24 日 2018 年 1 月 24 日 5.62017 年 8 月 30 日 8 月30, 2019 8月 30, 2020 5.72018 年 2 月 7 日 2018 年 8 月 7 日 2019 年 2 月 7 日 5.82018 年 9 月 4 日 2019 年 3 月 4 日 #2019 年 9 月 4 日 2019 年 2 月 26 日 2019 年 8 月 26 日 2020 年 2 月 26 日 Laravel 5.8
Laravel 5.8 は、新しい Eloquent リレーションシップ (has-one-through) の導入、電子メール検証の最適化、認可ポリシー クラスの自動登録など、Laravel 5.7 に基づいた最適化を継続します。規則に基づく、DynamoDB キャッシュとセッション ドライバー、タスク スケジューラーのタイム ゾーン構成の最適化、ブロードキャスト チャネルへの複数の認証ガードの割り当てのサポート、PSR-16 キャッシュ ドライバー仕様、
artisanserve
コマンドの最適化、PHPUnit のサポート8.0、Carbon 2.0 のサポート、Pheanstalk 4.0 のサポート、および複数のバグ修正と使いやすさの向上。Eloquent
HasOneThrough
アソシエーションEloquent は、
hasOneThrough
アソシエーション タイプのサポートを提供するようになりました。たとえば、Supplier モデル クラスと Account モデル クラスの間に 1 対 1 の関係があり、Account モデル クラスと AccountHistory モデル クラスの間にも 1 対 1 の関係があると仮定すると、Supplierモデル クラスと AccountHistory モデル クラスは、hasOneThrough
を介して接続できます。このメソッドは、Account モデル クラスに基づいてリモート レベルで 1 対 1 の関連付けを確立します。hasOneThrough
関連付けを使用して、Account モデル クラスを通じて AccountHistory モデル クラスにアクセスできます。/** * Get the account history for the supplier. */ public function accountHistory() { return $this->hasOneThrough(AccountHistory::class, Account::class); }
モデル戦略を自動的に検索します
Laravel 5.7 を使用する場合、各モデルの戦略は、アプリケーションの
AuthServiceProvider
に明示的に登録する必要があります:/** * 当前应用的策略对应关系 * * @var array */ protected $policies = [ 'App\User' => 'App\Policies\UserPolicy', ];
Laravel 5.8 では、モデルと戦略の命名が Laravel の標準規約に準拠している限り、モデル戦略の自動検索が導入されています。 。つまり、ポリシーは、モデルが含まれる
Policies
パスの下にある必要があります。たとえば、モデルはパスapp
に配置され、ポリシーはパスapp/Policies
に配置されます。さらに、ポリシー名はモデル名と一致し、接尾辞としてPolicy
を付ける必要があります。このようにして、User
モデルはUserPolicy
クラスに対応します。独自のポリシー検索ロジックを提供する場合は、
Gate::guessPolicyNamesUsing
メソッドを使用してカスタム コールバック関数を登録できます。一般的に、このメソッドはアプリケーションのAuthServiceProvider
から呼び出す必要があります:use Illuminate\Support\Facades\Gate; Gate::guessPolicyNamesUsing(function ($modelClass) { // return policy class name... });
{note}
AuthServiceProvider
戦略に明示的にマップされているものはすべて優先されます。暗黙的な自動検索戦略。PSR-16 キャッシュ仕様
キャッシュ アイテムを保存するときに有効期限をより細かく設定できるようにし、PSR-16 キャッシュ標準に準拠するために、キャッシュ アイテムの有効期限単位を分から変更しました。秒単位に調整します。
Illuminate\Cache\Repository
およびその拡張クラスのput
、putMany
、add
、remember
、##このように、各キャッシュストレージ実装クラスの #setDefaultCacheTimeメソッドおよび
putメソッドに対応する有効期限単位が調整されました。詳細については、関連する PR をご覧ください。
上記のメソッドがコード内で呼び出された場合は、対応するコードを更新して、現在渡された有効期間が以前の有効期間と一致するようにする必要があります (単位は以前の分ではなく秒になります)。
DateTime
インスタンスを渡してキャッシュ項目の有効期限を識別することもできます:// Laravel 5.7 - 缓存30分钟... Cache::put('foo', 'bar', 30); // Laravel 5.8 - 缓存30秒... Cache::put('foo', 'bar', 30); // Laravel 5.7 / 5.8 - 缓存30秒... Cache::put('foo', 'bar', now()->addSeconds(30));
Multiple Broadcast Authentication Watchers
Laravel の以前のリリースでは、プライベートおよび現在のブロードキャスト チャネルが認証します。アプリケーションのデフォルトの認証ガードを介してユーザーを保護します。 Laravel 5.8 以降、リクエストを認証するために複数のガードを割り当てることができます:
Broadcast::channel('channel', function() { // ... }, ['guards' => ['web', 'admin']])
トークン ガード トークン ハッシュ アルゴリズム
Laravel は基本的な API 認証を提供します
token
ガードは API トークンの保存をサポートするようになりましたSHA-256 ハッシュ アルゴリズムを使用します。これは、プレーン テキスト トークンを保存するよりも安全です。ハッシュ トークンの詳細については、完全な API 認証ドキュメントを参照してください。注: Laravel はシンプルなトークンベースの認証ガードを提供しますが、その堅牢性とオンライン アプリケーションの API 認証の提供を考慮して、Laravel Passport を使用することを強くお勧めします。
改善されたメールバリデーター
Laravel 5.8 は、SwiftMailer の
egulias/email-validator
パッケージを採用して、メールバリデーターの検証ロジックを改善しました。example@bär.se
など、Laravel 電子メール検証ロジックによって以前は有効であると見なされていた電子メール アドレスが、無効であるとみなされる可能性があります。デフォルトのスケジュールされたタスクのタイムゾーン
Laravel では、ユーザーが
timezone
メソッドを使用して、スケジュールされたタスクのタイムゾーンをカスタマイズできます:$schedule->command('inspire') ->hourly() ->timezone('America/Chicago');
スケジュールされた各タスクのタイム ゾーン タイム ゾーンを定義すると、さらに面倒で面倒になります。より簡単な方法は、
app/Console/Kernel.php
ファイルでschedule Timezone
メソッドを定義することです。このメソッドは、スケジュールされたすべてのタスクにデフォルトのタイムゾーンを返します:/** * 获取默认定时任务时区。 * * @return \DateTimeZone|string|null */ protected function scheduleTimezone() { return 'America/Chicago'; }
中間テーブル/ピボット モデル イベント
Laravel の以前のバージョンでは、アタッチ、デタッチ、またはカスタム中間テーブル / Eloquent を使用する場合多対多の関係を持つ「ピボット」モデルを使用する場合、モデル イベントは送出されません。 Laravel 5.8では、カスタム中間テーブルモデルを使用すると、これらのイベントがディスパッチされます。
Artisan 呼び出しの改善
Laravel では、
Artisan::call
メソッドを通じて Artisan を呼び出すことができます。 Laravel の以前のリリースでは、コマンドのオプションは 2 番目の引数として配列を介してメソッドに渡されていました:use Illuminate\Support\Facades\Artisan; Artisan::call('migrate:install', ['database' => 'foo']);
しかし、Laravel 5.8 では、オプションを含む完全なコマンドを渡すことができます。これは、最初の文字列パラメータとしてメソッドに渡されます。
Artisan::call('migrate:install --database=foo');
モック/スパイ テスト ヘルパー メソッド
モック オブジェクトをより便利に作成するには、新しい
mock
とspy
メソッドが基本的な Laravel テスト ケースに追加されました。これらのメソッドは、モック クラスをコンテナに自動的にバインドします。例:// Laravel 5.7 $this->instance(Service::class, Mockery::mock(Service::class, function ($mock) { $mock->shouldReceive('process')->once(); })); // Laravel 5.8 $this->mock(Service::class, function ($mock) { $mock->shouldReceive('process')->once(); });
Eloquent リソース キーの保持
Eloquent リソース コレクションがルートから返されると、Laravel はコレクションのキーを単純な番号順になるようにリセットします:
use App\User; use App\Http\Resources\User as UserResource; Route::get('/user', function () { return UserResource::collection(User::all()); });
Laravel 5.8 を使用する場合、
preserveKeys
属性をリソース クラスに追加して、リソース クラスのキーが保存されるかどうかを示すことができます。デフォルトでは、Laravel の以前のバージョンと一貫性を保つために、これらのキーはリセットされます:<?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; class User extends JsonResource { /** * Indicates if the resource's collection keys should be preserved. * * @var bool */ public $preserveKeys = true; }
preserveKeys
のプロパティ値がtrue
に設定されている場合、コレクション Keysuse App\User; use App\Http\Resources\User as UserResource; Route::get('/user', function () { return UserResource::collection(User::all()->keyBy->id); });
高レベル
orWhere
雄弁なメソッド以前にリリースされたLaravelでは、
or
クエリ演算子を介して複数のオブジェクトをマージします。 Eloquent モデル スコープではクロージャ コールバックを使用する必要があります:// scopePopular 和 scopeActive 方法定义在 User 模型中... $users = App\User::popular()->orWhere(function (Builder $query) { $query->active(); })->get();
Lavavel 5.8 では、クロージャなしでスコープのスムーズなチェーンを実現できる「高レベル」の
orWhere
メソッドが導入されています。$users = App\User::popular()->orWhere->active()->get();
Artisan Serve の改善
以前にリリースされた Laravel では、Artisan の
serve
メソッドはアプリケーション サービスを開始し、8000
ポートでリッスンします。serve
コマンド プロセスがすでに開始されており、このポートを占有している場合、serve
コマンドを使用して 2 番目のアプリケーション サービスを開始しようとすると失敗します。 Laravel 5.8 以降、serve
は8009
まで利用可能なポートをスキャンし、複数のアプリケーション サービスを同時に開始できるようになります。テンプレート ファイル マッピング
Blade テンプレートをコンパイルするとき、Laravel は、元の Blade テンプレート パスを含むコンパイル済みファイルの先頭にコメントを追加するようになりました。
DynamoDB キャッシュ/セッション ドライバー
Laravel 5.8 では、DynamoDB キャッシュとセッション ドライバーが導入されました。 DynamoDB は、アマゾン ウェブ サービスが提供するサーバーレス NoSQL データベースです。デフォルトの
dynamodb
キャッシュドライバー設定は、Laravel 5.8 キャッシュ設定ファイルにあります。Carbon 2.0 サポート
Laravel 5.8 は、Carbon 日付処理ライブラリの
~2.0
リリースのサポートを提供します。Pheanstalk 4.0 サポート
Laravel 5.8 は、Pheanstalk キュー ライブラリの
~4.0
リリースのサポートを提供します。アプリケーションが Pheanstalk ライブラリを使用している場合は、Composer を通じてライブラリを~4.0
リリースにアップグレードしてください。この記事は、LearnKu.com Web サイトで初めて公開されました。
- 複数のブロードキャスト認証ウォッチャー