nanisore oishisou

Webエンジニアあるまさんのゆるふわ奮闘記。

Laravel 5.0から5.1の変更点

あけましておめでとうございます!!

皆さん、「スター・ウォーズ/フォースの覚醒」はもう観ましたか?
私は観ました。
もう誰かにネタバレしたくて仕方ないのですが、そこは私もこんなに大きくなったので毎日グッとこらえています。

字幕を担当されていた翻訳者の林先生の講座に行って少しお話したことがあるんですけど、「俺は十分稼がせてもらったから今は後輩たちに仕事を譲ってやりたいんだけどね」と話していました。
でも、やっぱり大作になるとこういう有名な先生に白羽の矢が立ってしまうというのが世の常です。映画翻訳はホントに狭き門ですね。

ということで突然ですが、
今まで私はララ・ベル子という名にもかかわらず、
Laravel 4.2を普段使いしていて、5.0以上はふざけて使ったことしかなかったので、
そろそろ5.0以上を本気で使うために4.2から5.0の変更点をまとめようと思い立ちました。
(去年からずっと思ってたんだけど後回しにしてました。)

しかし、

リリースノートを見ただけでも4.2->5.0は変更点がめっちゃあるっぽい(ぐはぁっ)。
ということで4.2から5.0はすっ飛ばして、5.0->5.1の変更点をまとめるところから始めようという気持ちになりました。
5.1はLaravel初の長期間サポートバージョンですしね
(今回調べて初めて知ったことだけどね
(`・ω・´)キリッ)

真面目に話すと、4.2->5.0の場合は概念的なものも入り込んでくるので、じっくり勉強したいということもあり、後回しにしました。
決して面倒くさかったわけじゃないです。
決して!!ホントに!いま私、勉強してるからっ!

ちなみに、今回、参考にしたのはLaravelの公式リリースノートとLaracastsのWhat's New in Laravel 5.1です。

★Laravel 5.0から5.1の変更点
=====================================================
PHP 5.5.9+
動作条件はPHP 5.5.9以上。

・PSR-2に準拠
PSR-2のコーディングスタイル規約を採用した。

・Bladeへのサービス注入
Classのオブジェクトを直接Bladeに注入できるようになった。
(ただ、これをやると何となく誰かに怒られる気がしてならない。)

・Elixirの向上
 1.自動で2つのless、sass、coffeeファイルを1つにまとめてくれるようになった。
 2.Babelコンパイルに対応した。

・テスト設備の改善
FakerとMockeryが最初からインストールされるようになって結合テストが簡単に書けるようになった。

・モデルファクトリー
データベースにシードする際や開発中にテストする際に、ランダムなダミーデータを簡単な記述方法で作成してくれるモデルファクトリー機構が追加された。クロージャーでFaker Libraryのインスタンスを受け取りランダムデータの作成に利用できる。

・自作artisanコマンドの引数とオプションの書き方の改善
自作artisanコマンドの書き方が変わり、引数とオプションの定義の方法が改善されrouteの記述方式に近くなり、より簡潔に書けるようになった。
protected $signature = 'email:send {user}';

ディレクトリ構成の変更
app/Commands → app/Jobs
app/Handlers    → app/Listeners
ただし、このディレクトリ変更はコアシステムに影響する変更ではないため5.1にアップデートする際に必須ではない。

・ドキュメントの改善とLTS(Long-term support)
公式ドキュメントの検索がオートコンプリート機能つきリアルタイム検索になり、スピーディに該当ドキュメントを見つけられるようになった。
5.1はLaravel初のLTS(長期間サポート)版で、バグ修正は2年間、セキュリティー修正は3年間対応する。

ミドルウェアパラメーター
middlewareでカスタムパラメーターを受け取れるようになった。

・ルートグループ名
個別のルートだけでなくルートグループに独自の識別名を付けられるようになった。これにより名前付きルートグループ内では名前をつなげるだけで簡潔にルート名が表現できるようになった(ネスト表記できるようになった)。

Route::group(['as' => 'admin::'], function () {
    Route::get('dashboard', ['as' => 'dashboard', function () {
        // Route named "admin::dashboard"
    }]);
});

・ログイン試行回数制御 (Laravel 5.1.4+)
ログイン試行回数により一定時間ログイン処理を受け付けない制御ができるようになった。

・イベントブロードキャスト機能
クライアントにLaravelイベントをPushするブロードキャスト機能が追加された。
設定ファイル Config/broadcasting.php ではPusher、Redis(Socket.io)、logの3種からブロードキャストドライバーを選択できる。

ACL(アクセスコントロールリスト)認証 (Laravel 5.1.11+)
Laravel 5.1.11からACL認証ロジックがサポートされリソースへのアクセスを簡潔にコントロールすることができるようになった。
新たに追加されたGateファサードを利用して制限を定義する。
制限はコールバック、または新たに追加されたPolicyクラスを利用して定義することができ、Gateに用意されているメソッドを呼び出し利用することができる。
合わせてビューテンプレートには@can ~ @endcanディレクティブが追加になり、ビュー側でも認証コントロールが簡単にできるようになった。

・暗号化
これまでは暗号化にmcrypt拡張モジュールが使用されていたが5.1からは、より積極的に保守されているopenssl拡張モジュールに変更になった。
=====================================================

どうですか?
今まで5.0を使っていて次は5.1使おうかなって人は参考にしてみてくださいなー。

それでは、また!