バージョニング規約
Laravelのバージョニングは、「パラダイム.メジャー・マイナー」の規約を維持しています。メジャーフレームワークリリースは、1月と6月の半年ごとにリリースします。一方、マイナーリリースは毎週のように、頻繁にリリースされます。マイナーリリースは、ブレーキングチェンジを絶対に含めません。
アプリケーションやパッケージで、Laravelフレームワークやコンポーネントを利用する場合、常に5.7.*
のようにバージョンを指定してください。理由は上記の通り、Laravelのメジャーリリースは、ブレーキングチェンジを含んでいるからです。新しいメジャーリリースへの更新は、一日かからない程度になるように努力しています。
パラダイムシフトリリースは数年空けています。これはフレームワークの構造と規約に重要な変更が起きたことを表します。現在、パラダイムシフトリリースは開発されていません。
サポートポリシー
Laravel5.5のようなLTSリリースでは、バグフィックスは2年間、セキュリティフィックスは3年間提供します。これらのリリースは長期間に渡るサポートとメンテナンスを提供します。 一般的なリリースでは、バグフィックスは6ヶ月、セキュリティフィックスは1年です。Lumenを含め、すべての付加的なライブラリは、最新リリースのバグフィックスのみを受け付けます。
バージョン | リリース | バグフィックス期限 | セキュリティフィックス期限 |
---|---|---|---|
5.0 | 2015年2月4日 | 2015年8月4日 | 2016年2月4日 |
5.1 (LTS) | 2015年5月9日 | 2017年6月9日 | 2018年6月9日 |
5.2 | 2015年12月21日 | 2016年6月21日 | 2016年12月21日 |
5.3 | 2016年8月23日 | 2017年2月23日 | 2017年8月23日 |
5.4 | 2017年1月24日 | 2017年7月24日 | 2018年1月24日 |
5.5 (LTS) | 2017年8月30日 | 2019年8月30日 | 2020年8月30日 |
5.6 | 2018年2月7日 | 2018年8月7日 | 2019年2月7日 |
5.7 | 2018年9月4日 | 2019年3月4日 | 2019年9月4日 |
Laravel5.7
Laravel5.7はLaravel5.6からの持続的な向上に付け加え、Laravel Nova、認証のスカフォールドへのオプショナルなメール確認の導入、認可のゲートとポリシーでのゲストユーザーのサポート、コンソールのテスト向上、Symfonyのdump-server
の統合、通知のローカライズ化、それと様々なバグ修正に、使い勝手の向上が行われました。
Laravel Nova
Laravel NovaはLaravelアプリケーションの美しく、クラス最高な管理ダッシュボードです。Novaのメインな機能は、裏で働いているEloquentを使用したデータベースレコードを管理する能力です。さらに、Novaはフィルター、レンズ、アクション、キューされたアクション、メトリクス、認証、カスタムツール、カスタムカード、カスタムフィールドなども提供しています。
Laravel Novaについてより詳しく学ぶには、NovaのWebサイトで確認してください。
メール確認
フレームワークに含まれている認証スカフォールドへ、オプショナルなメール確認をLaravel5.7から導入しました。この機能を取り入れるために、フレームワークに含まれているusers
テーブルデフォルトマイグレーションへ、email_verified_at
タイムスタンプを追加しました。
新しい登録ユーザーへメールで登録を確認してもらうのを促すには、User
モデルにMustVerifyEmail
インターフェイスを実装します。
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements MustVerifyEmail
{
// ...
}
User
モデルにMustVerifyEmail
インターフェイスを実装すると、新しい登録ユーザーは、サイン付きの確認リンクを含んだメールを受信します。このリンクがクリックされると、Laravelは自動的に確認時間をデータベースに登録し、あなたの選んだページへユーザーをリダイレクトします。
verified
ミドルウェアをデフォルトのアプリケーションのHTTPカーネルへ追加しました。このミドルウェアは、追加したルートへ確認済みのユーザーだけを許可します。
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
Tip!! メール確認についてもっと知るには、完全なドキュメントをチェックしてください。
ゲストユーザーゲート/ポリシー
以前のバージョンのLaravelでは、認可ゲートとポリシーは、アプリケーションの未認証な訪問者に対し、自動的にfalse
を返していました。しかし今バージョンからはユーザーの引数定義で、「オプショナル」なタイプヒントを宣言するか、null
デフォルト値を指定することにより、ゲストを認可チェックにパスさせることができます。
Gate::define('update-post', function (?User $user, Post $post) {
// ...
});
Symfonyダンプサーバ
Laravel5.7では、Marcel Pociotによるパッケージにより、Symfonyのdump-server
コマンドを統合しました。利用開始するには、dump-server
Artisanコマンドを起動します。
php artisan dump-server
サーバを起動すると、すべてのdump
呼び出しはブラウザの代わりに、dump-server
コンソールウィンドウに表示されます。それにより、HTTPレスポンス出力をごちゃごちゃにしなくても、値を確認できます。
通知のローカライズ化
Laravelは現在の言語ではなく、ローケルにより通知を送れるようになりました。このローケルは通知がキューされていても保持されます。
これを実現するため、希望する言語を指定するlocale
メソッドをIlluminate\Notifications\Notification
クラスに提供しました。アプリケーションは通知を整形する時に、指定のローケルへ変更します。その後に整形が完了したら、以前のローケルへ戻ります。
$user->notify((new InvoicePaid($invoice))->locale('es'));
複数のNotifiableエントリーのローカリゼーションも、Notification
ファサードにより達成できます。
Notification::locale('es')->send($users, new InvoicePaid($invoice));
コンソールテスト
Laravel5.7でexpectsQuestion
メソッドを使用すれば、コンソールコマンドのユーザー入力を簡単に「モック」できます。更に、終了コードをassertExitCode
メソッドで、コンソールコマンドに期待する出力をexpectsOutput
メソッドで指定することもできます。
Artisan::command('question', function () {
$name = $this->ask('What is your name?');
$language = $this->choice('Which language do you program in?', [
'PHP',
'Ruby',
'Python',
]);
$this->line('Your name is '.$name.' and you program in '.$language.'.');
});
このコマンドを以下のように、expectsQuestion
、expectsOutput
、assertExitCode
メソッドを活用してテストできます。
/**
* コンソールコマンドのテスト
*
* @return void
*/
public function test_console_command()
{
$this->artisan('question')
->expectsQuestion('What is your name?', 'Taylor Otwell')
->expectsQuestion('Which language do you program in?', 'PHP')
->expectsOutput('Your name is Taylor Otwell and you program in PHP.')
->assertExitCode(0);
}
URLジェネレータとコールバック記法
コントローラアクションに対するURLを生成する場合、LaravelのURLジェネレータは文字列を受け取るだけでなく、"callable"記法も受け付けるようになりました。
action([UserController::class, 'index']);
ペジネーションリンク
Laravel5.7では、ペギネータのURL「ウィンドウ」の両サイドに、いくつの追加のリンクを表示するかを調整できます。デフォルトでは、メインのペジネータリンクの両サイドに3つのリンクが表示されます。この数を調整するには、onEachSide
メソッドを使用します。
{{ $paginator->onEachSide(5)->links() }}
ファイルシステム読み込み/書き込みストリーム
Laravelのファイルシステムに、readStream
とwriteStream
メソッドが用意されました。
Storage::disk('s3')->writeStream(
'remote-file.zip',
Storage::disk('local')->readStream('local-file.zip')
);