Laravel 5.7 リリースノート

バージョニング規約

Laravelのバージョニングは、「パラダイム.メジャー・マイナー」の規約を維持しています。メジャーフレームワークリリースは、1月と6月の半年ごとにリリースします。一方、マイナーリリースは毎週のように、頻繁にリリースされます。マイナーリリースは、ブレーキングチェンジを絶対に含めません。

アプリケーションやパッケージで、Laravelフレームワークやコンポーネントを利用する場合、常に5.7.*のようにバージョンを指定してください。理由は上記の通り、Laravelのメジャーリリースは、ブレーキングチェンジを含んでいるからです。新しいメジャーリリースへの更新は、一日かからない程度になるように努力しています。

パラダイムシフトリリースは数年空けています。これはフレームワークの構造と規約に重要な変更が起きたことを表します。現在、パラダイムシフトリリースは開発されていません。

サポートポリシー

Laravel5.5のようなLTSリリースでは、バグフィックスは2年間、セキュリティフィックスは3年間提供します。これらのリリースは長期間に渡るサポートとメンテナンスを提供します。 一般的なリリースでは、バグフィックスは6ヶ月、セキュリティフィックスは1年です。

バージョン リリース バグフィックス期限 セキュリティフィックス期限
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.'.');
});

このコマンドを以下のように、expectsQuestionexpectsOutputassertExitCodeメソッドを活用してテストできます。

/**
 * コンソールコマンドのテスト
 *
 * @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のファイルシステムに、readStreamwriteStreamメソッドが用意されました。

Storage::disk('s3')->writeStream(
    'remote-file.zip',
    Storage::disk('local')->readStream('local-file.zip')
);

ドキュメント章別ページ

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

バージョン

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる