Help us understand the problem. What is going on with this article?

Laravel 5.6の新機能

More than 1 year has passed since last update.

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)

saab
現在の興味は、Laravel5
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした