LoginSignup
3
5

More than 5 years have passed since last update.

Laravel 5.6の新機能

Last updated at Posted at 2018-04-10

2018年2月7日にリリースされたLaravel 5.6の新機能まとめ。

以下は、Laravel NewsのLaravel 5.6 is Live, Here’s What’s New!の翻訳。文章がこなれていないところや翻訳が怪しいところもあるが、何かあればご連絡ください。

ロギングの改良

Laravel 5.6における最大の機能はロギングの改良だ。まず、v5.6では、ロギングの設定ファイルは、config/app.php から、config/logging.php に変更になっている。

"stacks"への設定により、ログメッセージを複数のハンドラーに送ることができる。例えば、全てのデバッグメッセージをシステムログに送ると共にエラーログはslackへ送るということができる。

詳しくは、ロギングのドキュメントを参照のこと。

シングルサーバータスクのスケジューリング

タスクスケジューラーを複数のサーバーで走らせていると、タスクは各々のサーバーで実行されるが、onOneServer() メソッドを使うことで、どれか一つのサーバーだけで実行するようにすることが可能となる。

$schedule->command('report:generate')
    ->fridays()
    ->at('17:00')
    ->onOneServer();

注意:ディフォルトのアプリケーションキャッシュドライバとして memcached または redis キャッシュドライバを使うことで、Laravel 5.6ではシングルサーバータスクのスケジュールリングを活用することができる。

動的レート制限

Laravel 5.6では、動的レート制限が導入された。これにより、ユーザー単位で簡単にリクエスト数制限を行うことができるようになる。

Route::middleware('auth:api', 'throttle:rate_limit,1')
    ->group(function () {
        Route::get('/user', function () {
            //
        });
    });

上の例では、rate_limit は、App\User モデルの属性で、一定期間内でのリクエスト数を制限するものである。

ブロードキャスト Channel クラス

クロージャを利用する代わりに、routes/channels.php ファイルで channelクラスを使うことができる。

新しい channel クラスを使うために、新しく make:channel コマンドがLaravel 5.6では用意された。

php artisan make:channel OrderChannel

routes/channels.php ファイルへchannelを登録するには次のように行う:

use App\Broadcasting\OrderChannel;

Broadcast::channel('order.{order}', OrderChannel::class);

APIコントローラーの生成

HTMLを返すだけのリソースコントローラーに不要なcreateとeditアクションを除いたAPI向けリソースコントローラーを生成することができる。これを行うには、--apiフラグを使う:

php artisan make:controller API/PhotoController --api

Eloquentデータのキャスト

Eloquentのdate型およびdatetime型のフォーマットを個別にカスタマイズすることができる。

protected $casts = [
    'birthday' => 'date:Y-m-d',
    'joined_at' => 'datetime:Y-m-d H:00',
];

このフォーマットは、モデルを配列やJSONデータにシリアライズする際に使われる。

Bladeコンポーネントの別名

bladeコンポーネントに簡便にアクセスできるよう別名を定義することができる。例えば、コンポーネントを resources/views/components/alert.blade.php に置いた場合、component() メソッドによって短い別名を定義することができる。

Blade::component('components.alert', 'alert');

そしてこの定義された別名でレンダリングが可能となる。

@component('alert')
    <p>This is an alert component</p>
@endcomponent

Argon2 パスワードハッシング

Laravel 5.6 は、PHP 7.2以上で導入された新しいパスワードハッシングアルゴリズムに対応している。新しい設定ファイル config/hashing.php の中でディフォルトでどのハッシングドライバーを使うかを決めることができる。

さらに学ぶには、Argon2i hashing algorithmという記事を参照。

UUID Methods

ユニバーサルユニークID (UUID)を生成する Illuminate\Support\Str クラスにおいて、2つの新しいメソッドが利用可能となっている。

// The methods return a Ramsey\Uuid\Uuid object

return (string) Str::uuid();

return (string) Str::orderedUuid();

orderedUuid() メソッドは、簡単かつ効率的なデータベースインデッキシングに有効なタイムスタンプ順序のUUIDを生成する。

Collision

dev composer依存のパッケージとしてLaravel 5.6 でCollisionがやって来たという記事を最近書いた。これは、コンソールに綺麗なエラーレポートを出力するものだ。

alt

Bootstrap 4

すべてのフロントエンド・スキャフォールディングとVueコンポーネントのサンプルは今やBootstrap 4を使用している。ベータではあるが我々はBootstrap 4に対応してきたし、Bootstrap 4 Laravelプリセットを作ってきた。Bootstrap 4 stableをLaravel 5.6と一緒に出せることは非常に喜ばしい!

Laravel 5.6についてさらに学ぶには

あなたのLaravel環境をv5.6にアップグレードするには、アップグレードガイドを参照のこと。Laravelはあなたのアプリができるだけ最短にメジャーリリースにアップデートできるよう努力している。5.5から5.6へのアップグレードはたかだか10〜30分程度と思う。もちろん、アプリケーションによって差はあるのだが。

(original English article was written by Paul Redmond)

3
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5