新人Webエンジニアの記録。新人Webエンジニアの記録。新人のWebエンジニア、「ファガイ」が書く日々の日記。012017こんばんは。noteに書いてある機能を軽くまとめました。5.2Laravel5.2は主に5.1をサポートするような機能の追加がされています。認証のScaffoldingが提供これは標準の認証機能のテンプレートを生成してくれるものです。基本的に新規でアプリケーションを作る時等に使用します。make:auth暗黙のモデルバインディングルーティング等の際に自動的にモデルの情報を取得してコントローラーに渡すには、5.1まではRoute::modelを利用する必要がありました。5.2以降はメソッドのパラメータにルートパラメータを同じ名前を利用することで自動的にバインディングが出来るようになりました。ルートパラメータに{user}を指定し、パラメータの変数名もuserにしておくことで自動的にモデルにインジェクションされます。Groupの追加Middlewareをグループ化して定義することが出来るようになりました。これにより、web用のMiddlewareはこっち、api用のMiddlewareはこっちのように柔軟性が向上しました。新しく追加された\Illuminate\Routing\Middleware\ThrottleRequestsクラスは、単一IPからのアクセス数の制限を設定できます。//}]);配列の中のバリデーションが可能になりました*をつかうことで、配列の中身の要素のバリデーションが可能になりました。'email|unique:users']);バリデーションルールにbailルールが追加されました。bailルールは順番にバリデーションルールを確認していき、バリデーションに失敗した時点で以降のバリデーションルールをチェックしないルールです。以下の場合、integerルールに失敗した場合はuniqueルールは実行されません。以前までのバーションではEloquentのグローバルスコープに問題が有りましたが、こちらが改善されています。Laravel5.3Laravel5.3は全体的に新しい機能の追加がメインです。通知機能の追加Laravel5.3では通知機能が新しく実装されました。通知機能では、メール送信をしたりSlackに通知を投げたり、SMSを送信できたりする機能をサポートします。BroadcastingのサポートLaravel5.3ではWebsocketなどのチャンネルレベルの認証及び、送信をサポートしています。PassportはOAuth2認証を提供できるようにするパッケージです。APIでの認証などを出来るようにする際に便利そうです。Scoutは全文検索の検索をEloquentへ提供してくれているパッケージです。Scoutを使うことで、検索インデックスを自動的にEloqunetのレコードと同期してくれます。標準ではAlgoliaドライバを提供していますが、カスタムドライバも簡単に書くことが可能。Mailableオブジェクトの追加Mailableオブジェクトの追加により、メッセージ情報などをクラス化出来るようになりました。アップロードされたファイルの保存が簡単にアップロードされたファイルをすぐ保存できるメソッド、storeメソッドが追加されました。以前まではStorageクラスを利用する必要がありました。Elixirが更新され、Webpack+RollupでのJavaScriptのバンドルが標準になりました。Laravel5.4Markdownを利用してメールや通知のViewを書けるようになりました。利用は簡単で、markdownというメソッドが提供されるようになっているため、そのmarkdownメソッドを利用して指定すればOKです。Duskはブラウザテスト及び、APIのテストを提供します。従来のSeleniumなどでのテストも可能ですが、ChromeDriverを利用したテストも可能です。Mixからはgulpを利用せず、Webpackベースになりました。ComponentsとSlotの追加Bladeの1ファイルをコンポーネントとみなし、そのcomponentへ注入出来るSlotが追加されました。これはおそらくVueの機能をLaravelへ落としたものだと考えられます。wrong!@endcomponent上記の様に@componentディレクティブでalertコンポーネントを呼び出し、$slotに対象の情報が入ります。複数のslotを用意したい場合には以下のように出来ます。resource!@endcomponentBloadcastへのモデルのバインディングが可能に5.2で追加されたルーティングのモデルのバインディングと同じものです。Messagesをサポートうまい訳が見当たらなかったのですが、以下のようなことがcontains,each,every,filter,first,map,partition,reject,sortBy,sortByDesc,sumで行うことが出来ます。$invoice->pay();});これが$invoices->each->pay();に出来るようになります。sumメソッドに関してはコレクションに含まれる数値のプロパティを足した結果を返すようなことが出来ます。$usersのコレクションのvotesの合計を返します。$users->sum->votes;正直ソースが把握しにくくなりそうな気がして使うべきか迷うところです。オブジェクトベースのEloquentイベントEloquentのイベントをイベントに渡すにはAppServiceProviderなどから渡す必要がありました。User::creating(イベントクラスや無名関数);バージョン5.4からはこれをEloquentのオブジェクトへ定義出来るようになりました。];}キューJobのリトライ&タイムアウト機能キュージョブにリトライ機能とタイムアウト機能が追加されました。120;}リクエストをサニタイズするミドルウェアが追加デフォルトのmiddlewareにTrimStringsとConvertEmptyStringsToNullが追加されました。名前の通り、TrimStringsはtrimメソッドを実行するもので、ConvertEmptyStringsToNullは文字が空ならNullに変換するミドルウェアです。リアルタイムFacadeこれまでFacadeはサービスコンテナへの登録、app.phpへの登録などの作業がありました。リアルタイムFacadeはそれを非常にシンプルにしたものです。//}上記のようなサービスがあり、これをFacade経由で呼び出したいとします。リアルタイムFacadeではuse文を利用するときにFacades\を前に付けるだけでリアルタイムFacadeになります。Facades\App\Services\Sample;上記のようにすることで、自動的にFacadeになります。カスタムPivotテーブルモデル今まで中間テーブルにアクセスするには提供されているPivotモデルインスタンスが自動的に使われていました。5.4からはPivotモデルを自分で定義できるようになりました。Clusterをサポートよくわからないです。マイグレーション時のデフォルトの文字列長が変更にLaravel5.4は標準でutf8mb4文字セットを利用します。これは絵文字までをサポートした文字セットです。デフォルトの文字長は191文字に変更になりました。Laravel5.5次期リリースのバージョンで、LTSリリースとなります。PHP7以上が必要で、リリース自体は2017年7月以降になります。migrate:freshコマンドの追加migrate:freshコマンドはmigrate:refreshコマンドの短縮版と言っていいでしょう。migrate:refreshと異なる点として、freshコマンドは一度全テーブルをdropした後にmigrateするということです。データベースの中にLaravelアプリケーションと関係ないテーブルが含まれる場合はfreshコマンドを使ってしまうと大惨事ですね。コメントデータの処理方法の詳細はこちらをご覧ください。プロフィールファガイ本当のWebエンジニアを目指す27歳。新人Webエンジニアの記録。