新機能のひとつをお届けしました。追加されたその他の新しい機能をまとめてみたいと思います。効率的なサイト構築に役立ててください。resources内フォルダ構造が平坦化されました。場合は以下のようにassetsが存在していました。それが今回のアップデートで、以下のように平坦な構造になっています。Eloquentモデルのエラーメッセージが改善された例えば以下のような存在しないメソッドを実行する場合です。場合は以下のようなエラーを表示していました。エラー内容を見てみると、Builder::nothing()となっています。exist」と書かれているので、何かが存在しないことは分かるものの肝心の「どこの?」が抜けてしまっていました。5.7では以下のように改善されています。「App\User::nothing()というまだ定義されていないメソッドが呼ばれました。」と、どこの何でエラーが発生しているかを教えてくれるようになりました。Pagination(ページリンク)で両サイドの件数が指定できるようになった例えば、以下のようなコードを実行すると、通常のページ送りリンクが表示されます。\App\User::paginate(10)->links();そして、今回追加されたonEachSide($count)を使うと、この中央の両サイドにあるリンク数を指定することができます。実際の例で見てみましょう。\App\User::paginate(10)->onEachSide(1)->links();なお、デフォルト値は3です。独自Artisanコマンドのテストができるようになったテスト用の独自コマンドを作るまず、TestCommandという独自コマンドを作ってみましょう。好きな食べ物を答えてもらう好きな音楽ジャンルを選んでもらうという2つの質問と、その結果を表示するというコードを追加します。コードは以下のようになります。'テストコマンドです。command:testを実行してみましょう。結果がこのように表示されます。コマンドをテストするでは、ここからがメインの「Artisanコマンドのテスト」です。実行環境として、PHPUnitを使います。存在しているtests/Unit/ExampleTest.phpを使ってテストを作成してみましょう。コードは以下になります。->expectsOutput('好きな食べ物は「カレー」、音楽は「ロック」です。'ロック')2つの期待する答えがあっているかチェックします。->expectsOutput('好きな食べ物は「カレー」、音楽は「ロック」です。')そして、最後に表示が正しいかチェックします。以下のコマンドでPHPUnitで実行してみましょう。vendor/phpunit/phpunit/phpunitうまくテストを通過したようです。「ロック」を「ポップ」に変更して実行してみます。'ポップ')この場合、以下のようなエラーが表示されることになります。好きな食べ物は「カレー」、音楽は「ロック」です。表示されていませんよ!と言っています。変数の中身を確認するDump-Serverが追加されたdump-serverを使うために、まず以下の起動コマンドを実行します。dump-serverすると以下のような内容が表示されます。(終了したい場合はCtr+Cです。)ではこの状態で以下コードをブラウザから実行してみましょう。'xxxxx';dump($test);すると、起動中のDump-Serverが以下のような情報を表示してくれます。-----------------------------------------"xxxxx"このように、コードを実行している途中に変数の中身をチェックすることができるわけですね。以下のようにループごとに変数の中身が変わってしまっても、Dump-Serverを起動していれば変数の中身がどのように変化しているか、その都度表示してくれるので、バグ修正などに役立つことでしょう。dump($i);}action()にクラスを指定してURLを取得できるようになったまず、web.phpに以下のようなRouteがあるとします。までは、action()を使って次のようにURLを取得するこができていました。::classを使って直接指定することができるようになりました。Verification(本登録メール)の使い方で、詳しく紹介しているのでそちらをご覧ください。Filesystemにストリーム用のメソッドが追加されたテストとして、storage/app/publicにtest_1.zipというファイルを用意し、これをtest_2.zipという名前でローカル(つまり、storage/appフォルダ)に保存してみます。実際の運用ではS3やSFTPなどを使うことになるでしょう。Notificationの言語を指定できるようになったサンプルとして、日本語環境でフランス語のメッセージを送信してみましょう。config/app.phpのlocaleをjaに設定しておいてください。翻訳データをつくるまず、resources/lang内に翻訳データを作成します。以下2つのフォルダにそれぞれの翻訳データを作成しましょう。'];ファイル構造はこのようになります。Notificationを実装するOrderedという名前のNotificationを作成します。Orderedコマンドを実行したら、app/Notifications/Order.phpを開いてtoMail()の中身を以下のように変更してください。ここがさっきの翻訳データ}Notificationを実行するでは、まずは通常どおりメッセージを送信してみましょう。}すると、以下のようなメッセージが送信されました。ちなみにHello!などの部分は、Notificationの方で日本語化する必要があります。詳しくは、【Laravel5.6】インストール直後にやること3点をご覧ください。次にフランス語を指定してメッセージ送信してみましょう。Ordered())->locale('fr'));うまくフランス語に切り替わってメッセージ送信することができました。この方法を使えば動的にNotificationの言語を切り替えることができますね。5.7.7からはUserモデル内でデフォルトの言語を指定できるようになりました。この機能を利用するには、まずusersテーブルに言語情報を登録するlocaleフィールドを追加してマイグレーションします。});}テーブル構成は以下のようになります。app/User.phpにHasLocalePreferenceを追加します。省略}以上で設定は終わりです。後は、言語をわざわざ指定しなくてもusersテーブルから自動的に対象となる言語に切り替えられて通知(メール送信)されることになります。※適用されるのは以下の赤枠のデータです。以下のように言語を指定した場合はそちらが優先されます。英語で送信される);おわりに今回追加された新しい機能の中で地味に効果を発揮しそうなのが、「エラーメッセージの改善」ですね。ひとつのエラーだけならそれほど時間の短縮にはならないかもしれませんが、これが何十、何百と重ねていくとショートカットできる時間も積もり積もって山となりそうだからです。あとは、やっぱりDump-Serverですかね。変数内の状況を全て確認できるので、「どのデータのときにエラーが発生しているか」をチェックしやすくなるのではないでしょうか。これからもすばらしい作品を楽しみにしています!ではでは〜。開発スキルプログラム開発は15年以上。Laravel、Vue.jsをメインとしてPython(機械学習)やElectronの開発もお引き受けしております。過去2度カナダのバンクーバーに滞在していました。開発状況によりましては開発をお待ちいただく可能性がございますが、いつでもご相談は受けさせていただいております。お気軽にご連絡ください!お問い合わせフォーム開発してほしい機能を募集中!MITライセンスで公開します。詳しくはこちらの記事をご覧ください。ぷれりり・プレスリリース掲載無料のプレスリリース・スタンド!播磨孤道(はりまこどう)兵庫周辺のゆったり自転車一人旅の記事を書いていきます。