忍者ブログ
プログラマ、ララ・ベル子さんのゆるふわ奮闘記。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

CarbonのdiffIn系のやつでUTCに変換されてうまくdiffできない問題の解決策

Carbon使っていて3月にバグがたくさん出る問題

↑これでも話したんですが、「diffInMonthsなどの差分系メソッドはUTCに変換されてから計算されるため1日だと予想した結果にならない場合がある」んですね。
それでdiffInMonthsの場合に安全な日付10日とかにしてからdiffInするという方法を紹介しました。
ただ、これだと月単位じゃなくて日にち単位でdiffしたいときなどに困ります。
具体的にはdiffInYearsとかの場合です。

そういう場合は、インスタンス作るときに最初からtimezoneをUTCに設定してやればよいです。

$year_month = Carbon::parse($year_month, 'UTC');
$hikaku_shitai_date = Carbon::parse($hikaku_shitai_date, 'UTC');
$diff = $year_month->diffInYears($hikaku_shitai_date);


こんな感じです。

日付の扱いはいろんな言語で結構やっかいなこと多いですよね。。
ということで短いですが、今日はこれで終わりです。

拍手[1回]

PR

あれ?Laravel Valetでなんかうまく表示されないねってとき

どうも、こんんちは!!ベル子です。

最近、ベル子は小説を書いています。
その昔ケータイ小説全盛期の頃にはよく書いていたんですが、最近はめっきり時間もなくなり書かなくなりました。
趣味と言えそうなものは小説を書くことくらいなので、また再開して長編を書いていこうと思うます。

すごくふざけたギャグ小説を書いたこともあるんですが(本来の作品よりふざけて書いたものが歴代7位くらいになってしまったという思い出したくない過去。)、サイトをお引っ越ししたこともあり、本来の私の作風である中二病的な短編をいくつかリリースしました。
読んだら悲しくて暗い気分になるものばかりです←

なので、読んでくれる人がいたらすごいなーくらいだったんですが、結構、読んでくれる人がいてランキングにも表示されました。今は流れちゃいましたが。
文章を書くのは、いい気晴らしになります。


ということで本題です。

Laravel 5.4で導入されたDuskという機能があるんですが、
こちらをお試ししてみたかったので久々にローカル環境にLaravelアプリを構築してみようと思ったのですが、あれ?そういえばValetの設定ってどうすんだっけ?と思って
valet parkだの valet linkだのvalet restartだのいろいろしてみたけど502か404になって
全然表示されないT Tという事象にぶち当たりまして、
一旦アンインストールしてもう一度入れ直したら直ったよという話です。

まずValetをアンインストールする。

valet uninstallがうまくいかないという記事を見つけたので手作業でアンインストールすることにする。

composer global remove laravel/valet

~/.valetディレクトリを削除

php7とか入ってたらアンインストールする
brew uninstall php70

dnsmasqとnginxを同様にアンインストールする
brew uninstall dnsmasq
brew uninstall nginx

そして1から出直す。

brew update brew install homebrew/php/php71
↑ポイントはhomebrewのphpを入れること。多分これが原因

composer global require laravel/valet

valet install

pingでvaletが有効になってるかチェク

ping foobar.dev

アプリケーションのディレクトリを作成し

mkdir ~/Sites

cd ~/Sites

valet park

laravel new hoge

そしてから以下にアクセスするとローカルでLaravelがもう見られる状態になってます。

http://hoge.dev/

静的なhtmlページを表示したい場合は以下のようにやると

valet link app-name

http://app-name.dev/

で表示されるようになります。


ほとんど公式ドキュメントからコピペしただけですが、valet便利だねと改めて思いました。
ちなみに自分が設定したドメインとかparkしてるパスとかは以下のjsonで確認できます。
自分で直にディレクトリを書き換えても反映されました。

~/.valet/config.json


本当はDuskを使ってみてブログ書こうと思ったけど
それはまた次回につづく!!

拍手[0回]

ViewComposerで渡すデータをControllerで渡したデータとマージする

DOMO、最近、go言語に興味があるベル子です。
速いは正義。

話は変わって、
皆さんは、グローバルなメニューなどで使わなきゃならない値がある場合、
どうしてますか。

私がそれと初めて出くわしたのは、今の会社に入って間もなくのことでした。
グローバルメニューに設置するお知らせ機能で使うデータです。
まだLaravelのこともよく分かっておらず、
毎日Google先生とドキュメントを並べて睨めっこしながら書いていた頃です。
いや、今でもしょっちゅう睨めっこしてますねw

それでどうしよーかなーと思ってStack Overflow先生に聞いてみたら
ViewComposerを使ったらええよって教えてくれました。偉大。
ただ、もうその頃は5がリリースされてたんで5系の記事ばかりで、
4.2と5で何がどう変わったのかもよく知らなかった私は、4.2でどうしたらいいのか困ってしまって、先輩PGに聞いてみることにしました。
そしたら、「そんな難しいことしないでViewで直接取ってきたらいいんじゃないの」と言われて「ああ、確かに」となったわけです。

それで調子に乗って、面倒くさい時はViewから直接、値を取りまくっていたら「こういうのはControllerに書いて」と言われたんですね。
「でもパイセンもユーザーデータはViewで、毎回、取ってるじゃないですか!これと何が違うんですか?!」と言ったら、「これくらいは仕方ないんだよね」との回答で、当時はその理由がよく分かってませんでした。

「仕方ない」を要約するとこうです。
私たちの作ってるようなアプリケーションて、ログインユーザーにいろいろ紐づけられていることが多くて、ログインユーザーデータはしょっちゅう使うことになって、それを毎度毎度Controllerで設定してやるのが面倒だし、そのページのユニークの値でもないからワザワザ毎回書いて渡すのは気持ち悪い。
あとLaravelのFacade使って書けるので、Auth::user()みたいな感じで、めっちゃ短いし、Facadeだから毎回取りにいってるのとは違う。
ということなんですね。

ただ、MultiAuthになるとユーザーデータ取るときにAuth::guard('user')->user()みたいに取らないといけなくて、長くて見た目が気持ち悪いので、今、自分がやってる案件では毎度Viewにwithで渡していたんです。
そしたら一緒に書いているエンジニアさんから「これ毎回渡すの面倒くさいから、ViewComposerで弾込めしてもいいですか?」と言われたんです。
やっぱね、そうだよね。
私も何となくそれがいいんじゃないかと思ってた。

それで、ここからが本題なんですけど、ViewComposer てめっちゃ便利なんですよ。
そのViewで使う値を弾込めしておけるから、Controllerから渡してやる必要がないんで、
「このページでもこの値(view)使ってたんだー。わーマジ面倒いわー。」がなくなります。

しかもViewの指定に以下のようにワイルドカードが使えるので、このディレクトリ以下のView全部に弾込めねーも出来ちゃうという。
View::composer(
'profile/*', 'App\Http\ViewComposers\ProfileComposer'
);


すごいよ、すごいよ。

具体的にはComposerServiceProviderを追加して、そこで弾込めするviewと、ロジックを書くComposerクラスを指定するという感じです。
詳しくはドキュメントを参照。
ServiceProviderを新しく作成したときは、config/app.phpのprovidersに追加するのを忘れずに。

それで、先日、大きなUI改修があって、いろいろ弾込めしないといけない事案が発生。
ViewComposer 使ってなかったら、もうげんなりしちゃうとこですが、そう今の私にはViewComposer があるんだぜっ!
だから全部使いそうな値はこっちに移してやるんだぜっ!

いでよ、超絶コピペ技巧!!
いやーいい汗かいたぜ。

と思ったのもつかの間、他の実装を進めていると、何やらデータがいろいろおかしい。
そしていろいろエラーが出ている。

ちゃんとControllerで設定してあるし、dumpしても値取れてるやん。
Viewでdump。

ファッ!?Controller の値とView の値がちがう。もしや呪いか!?
どうしよう、近くに教会がない。。

と思ったけど、私には思い当たることがあった。
そう、昨日の超絶技巧。
原因はきっとあれや。

あれー?蘭ねーちゃん、でもComposerの値ってController ので上書きされるんじゃなかったっけ?
そう書いてあった気がするんだけどなぁ(メガネキラーン)。

で、ドキュメントを確認したところ、
Just before the view is rendered, the composer's compose method is called with the Illuminate\View\View instance. 

つまり、viewがレンダリングされる直前にcomposeメソッドは呼ばれる。

なんだ書いてあるやん。しかもめっちゃ逆やん。
100万年前からそうだと思ってたけどね!

というわけで、
Controllerでその変数設定してたら、そっちで上書きねーを実現するには、
以下3つの方法のどれかにする必要がある。

・viewのデータをgetDataしてmergeする
・ComposerやめてCreatorにする(Creatorはレンダー直前じゃなくてViewがインスタンス化された直後に実行される)
・offsetExistsで、すでにkeyがあるか判定する

viewのデータをgetDataしてmerge

view()->composer(‘partials.header’, function ($view) {
$with = array_merge([
'message' => 'This is a message on some page'
], $view->getData());
$view->with($with);
});


参考サイト

ComposerやめてCreatorにする

view()->creator('profile', 'App\Http\ViewCreators\ProfileCreator');


参考サイト

offsetExistsで、すでにkeyがあるか判定する

if($view->offsetExists('language_id')) {
$language_id = $view->offsetGet('language_id');
}


参考サイト

今回は設定するデータが多くて、すでにkeyがあるのか判定するのが面倒なので一番上のマージする方法を選択することにした。

ってここまで書いていて思ったんだけど、
ワイルドカード使ってるから同じディレクトリ配下のpartialなviewをいっぱい読み込んでいたら
全View分でデータ取ってきてマージしてってしてそう。。。
やっぱり弾込めするViewは細かく指定したほうが良さそうですね。

週明けにもう一度dumpしながら修正することにしよ。

ということで、皆様も便利なものを使うときは
使用上の注意をよく読み、用法・用量を守って正しくお使い下さい
じゃないと期限日直前に呪われます。

God bless you.

拍手[0回]

Laravel 4.2から5.0の変更点

おっす。オラ、ベル子。
みんな元気してたー?

この前、

Laravel 5.0から5.1の変更点

を書いてからだいぶ経ってしまいましたが、予告どおりLaravel 4.2から5.0の変更点まとめ記事をアップするよ。

と、その前に恒例の雑談を少々。

女子が無駄になんでも
「超かわいいー」
「マジかわいいねー」
「ウケるーかわいいー」
って言い合ってるのを誰でも一度は聞いたことがあると思います。

今日、Githubのタコ足の猫のステッカーを会社の人からお裾分けしてもらったんですが、
それが「超かわいいー」「マジかわいいねー」「ウケるーかわいいー」だったんですね。
だけど、そういう時に女の子がいないとどうなるかっていうと
一人かわいいのコールアンドレスポンスになってしまうわけです。

Say かわいい
かわいい!!
Say かわいい
かわいい!!

by 全部俺様

孤独を愛するベル子さんも、今日ばっかりはさすがに寂しかったです。
どんな挙動不審な子でも、リア充爆発しろを連呼してるような子でも、百歩譲って男の娘でもいいので、もう一人だけ女子(っぽい)プログラマーがいるといいなぁと思う今日このごろです。
真面目な話、うちの会社は女子も働きやすい職場だと思うので。
特にそう思う根拠は見つからないのですが、私が言うんだから間違いないです。

さて、では本題のLaravel 4.2から5.0への変更点まとめです。
最初のうちは4.2から5.0に以降する際につまづきやすいところを踏まえてまとめていたのですが、
最後のほうは、よく分からない機能もいっぱい出てくるので、単にドキュメントの翻訳になってしまいました。

そして、Laravelのドキュメントの日本語訳は、みなさんもご存知だと思いますがすでに訳されている方がいらっしゃいまして、その方の翻訳が素晴らしいので

いったい私は何をしたんだろう?(白目)

という気持ちになりましたが、英文を翻訳するという作業は、本当に内容を理解していないとできないことなので、そういう点で調べ物もいろいろすることになって、非常に勉強になるんですね。

ということで翻訳されてる方のページも貼っておきますので、私の翻訳と見比べて心の中で「俺は断然ベル子派だぜ!」と思っていただいても構いません。そちらを見ていただいても大体同じ内容です(´・ω・`)


★4.2から5.0での変更点
ーーーーーーーーーーーーーーーーーーーー
▼リリースノート
http://readouble.com/laravel/5/1/ja/releases.html#laravel-5.0

・フォルダ構造
app/modelsディレクトリが削除され、代わりにappフォルダ直下に入れられるようになった。
HTTPトランスポート層に関連するクラスを格納する /Controllers /Middleware /Requests(MiddlewareとRequestsは5.0で登場した新タイプのクラス群) が app/Http 配下に配置された。
app/filters.phpは廃止され、代わりに全てのMiddlewareクラスは個別ファイルに記述できるようになり、app/Http/Middleware 配下に格納するようになった。
app/start配下にあったファイル群はapp/Providersに個別のservice providerファイルとして格納するようになった。
langファイルとviewsファイルはresourcesディレクトリ配下に配置された。
その他に、アプリケーションのロジックと関係ないディレクトリ(/config /database /storage /tests )がapp配下から移動されルートに配置されるようになった。

・名前空間の採用
5.0から名前空間指定が必須となった。

・契約
Laravelの主要なサービスがilluminate/contracts配下にインターフェースとしてまとめられた。

・ルートキャッシュ
php artisan route:cache
route:cache artisanコマンドを実行すると、app/Http/routes.phpの代わりにキャッシュされたルートが使用されるようになり、アプリケーションルート登録時間を劇的に短くすることができる。
新たにルートを追加した際は再度コマンドを実行する必要があり、キャッシュを削除したい場合は、route:clearコマンドを実行する必要がある。
php artisan route:clear

・ルートミドルウェア
Laravel 4ではフィルターと呼んでいた機能が、5.0ではHTTPミドルウェアになった。認証フィルターとCSRFフィルターはミドルウェアに置き換えられapp/Http/Middlewareに個別のファイルとして格納されている。

・コントローラメソッドインジェクション
Classのオブジェクトをコントローラーのコンストラクタだけじゃなくて、個別のメソッドにタイプヒントで注入できるようになった。
メソッドに他のパラメータが渡されていたとしても、サービスコンテナは自動的に判別して注入してくれる。

・認証スキャフォールド
ユーザー登録、認証、パスワードリセットコントローラーが初めから用意されていて、対応するビューやusersテーブルのmigrationもデフォルトで用意されている。

・イベントオブジェクト
イベントは文字列の代わりにオブジェクトとして定義できるようになった。
イベントハンドラーはデータのリストを受け取る代わりに、イベントオブジェクトを受け取る。

・コマンド/キュー
Laravel4でのキュージョブフォーマットに加え、5ではシンプルなコマンドオブジェクトとしてキュージョブを表現できるようになった。
格納場所はapp/Commandsディレクトリに配置する。

・データベースキュー
データベースキュードライバーが追加された。
データベースソフト以外の追加パッケージを必要としないシンプルなローカルキュードライバーである。

・Laravelスケジューラー
これまでエンジニアは、定期的に実行したいCUIコマンドがある場合、そのたびにCronエントリを作成してきた。
作成したCronエントリはソース上のどこからも見つけられず、追加するにはサーバーにSSH接続する必要まであり、エンジニアたちの悩みの種となっていた。
Laravelのコマンドスケジューラーを使って、コマンドのスケジュール管理をLaravel上でスムーズで分かりやすく定義できるようになった。

・Tinker/Psysh
php artisan tinkerコマンドには、より堅牢なPHP REPLであるJustin HilmanのPsyshを利用することにした。Laravel 4で使っていたBorisを気に入ったのであれば、きっとPsyshも気に入るだろう。より優れていると言っていい。なんとWindowsでも動く!

・DotEnv
分かりづらく深い階層を有したさまざまな環境設定ディレクトリの代わりに、Laravel 5ではVance LucasのDotEnvを利用することにした。
このライブラリは環境設定をスーパーシンプルな方法で管理でき、Laravel5の環境設定をスムーズに行えるようにする。

・Laravel Elixir
Jeffrey Wayが作ったLaravel Elixirは、各種メタ言語のコンパイルや、ファイル結合をするための、スムーズで分かりやすいインターフェースを提供する。
もし、これまでGruntやGulpを学ぶことに怯えていたのなら、もう怖がることはない。Elixirを使えば、Gulpを使用してのLess、Sass、CoffeeScriptのコンパイルを超絶簡単に始められる。さらにテストまで走らせられる!

・Laravel Socialite
Laravel SocialiteはLaravel 5.0+互換パッケージとして、超絶簡単なOAuth認証機構を提供する。
現在、SocialiteはFacebook、Twitter、Google、GitHubをサポート。

・Flysystem統合
パワフルなファイルシステム抽象化ライブラリFlysystemをLaravelに導入。
Flysystemはローカル、Amazon S3、Rackspace cloud storageのすべてを1つに統合する統一されたエレガントなAPIである。
ファイルをAmazon S3に保存するのが、超簡単になった。

・フォームリクエスト
Illuminate\Foundation\Http\FormRequestクラスをextendしたフォームリクエストクラスが追加になった。このリクエストオブジェクトはコントローラーメソッドインジェクションで注入され、定型的なバリデーション用の記述をすることなく、ユーザー入力のバリデーションが行える。
注入されたクラスがフォームリクエストのインスタンスであるとLaravelサービスコンテナに認識されると、リクエストは自動的にバリデーションにかけられる。
コントローラーのアクションが呼び出されると、HTTPリクエストのinputはフォームリクエストクラスで定義されたrulesに従い検証される。そしてリクエストが検証通過しない場合はリダイレクトされ(カスタム可能)、エラーメッセージが次のリクエストの間だけ、セッションに保存される(またはJSONに変換される)。

・シンプルなコントローラリクエストバリデーション
Laravel5のベースコントローラーにValidatesRequests traitが含まれた。
このtraitは入力リクエストを検証するシンプルなvalidateメソッドを提供する。
もしフォームリクエストがアプリケーションに対して大げさだと思う場合は、こちらも利用できる。
バリデーションが通らない場合は、例外が投げられ、自動的に適切なHTTPレスポンスがブラウザーに返される。さらに、バリデーションエラーが次のリクエストの間だけセッションに保存される。もしリクエストがAjaxだった場合、LaravelはJSON記法でバリデーションエラーを返却してくれる。

・新しいジェネレーター
新しいデフォルトアプリケーション構造を補完するため、新たにArtisanジェネレーターコマンドがフレームワークに追加された。
php artisan listを参照してほしい。

・設定のキャッシュ
config:cacheコマンドで、全ての設定を1つのファイルにキャッシュできるようになった。

・Symfony VarDumper
変数のデバッグ情報を出力する人気のヘルパー関数ddが、Symfony VarDumper仕様にアップグレードされた。
出力は色分けされ、配列は折りたためるようになった。


▼アップグレードガイド
http://readouble.com/laravel/5/1/ja/upgrade.html#upgrade-5.0

・環境設定
app/config/{environmentName}/での設定を.envに変更。.envの値にはenv('key', 'defalt value')でアクセス可能。
.envの書き方については.env.exampleを参照。

・ルート
routes.php → app/Http/routes.php

・コントローラ
app/Http/Controllers ディレクトリへ

・ルートフィルター
app/filters.phpは使用しなくなった。
代わりにauthやcsrfは
 ['before' => 'auth']
ではなく
['middleware' => 'auth']
で参照できる。
しかし、Filtersは5で削除されたわけではないのでbeforeとafterを使いカスタムフィルターを作成することはできる。

・グローバルCSRF
デフォルトで全てのルートに対して、CSRFプロテクションが効いている仕様に変更された。
CSRFプロテクションを切りたいときや、特定のルートのみに効かせたい場合は、App\Http\Karnelを修正する。

・model格納用ディレクトリ
modelファイル格納用ディレクトリはなくなり、app直下に配置するような構造になった。
もしapp/Modelsディレクトリを作ってファイルを格納したい場合は、composer.jsonのclassmapディレクティブにディレクトリを追加するのを忘れないこと。

・Eloquentキャッシュ
Eloquentのクエリーをキャッシュするrememberメソッドが削除された。Cache::remember関数を使って各自でキャッシュすること。

・Laravelキャッシャー
使用するtraitとinterfaceの名称が変更になった。
メソッドの変更はない。

・Artisanコマンド
app/commands → app/Console/Commands
Artisanコマンドのリストは
start/artisan.php → app/Console/Kernel.php のcommand配列の中へ

・マイグレーション
app/database/migrations → database/migrations

・シード
app/database/seeds → database/seeds

・グローバルIoCバインディング
サービスコンテナバインディングは
start/global.php → app/Providers/AppServiceProvider.php のregisterメソッドへ

・ビュー
app/views → resources/views

・Bladeタグの変更
セキュリティの強化のため、Laravel 5.0から{{ }}と{{{ }}}のどちらを使用した際の出力もエスケープ処理されるように変更。
新たに生データを出力するタグとして{!! !!}が追加された。
もし4.2のBladeシンタックスを使用しなければならない場合は、以下の場所に以下の3文を追記のこと。
AppServiceProvider@register
\Blade::setRawTags('{{', '}}');
\Blade::setContentTags('{{{', '}}}');
\Blade::setEscapedContentTags('{{{', '}}}’);
{{-- --}}のコメント用タグも廃止になった。

・言語用ファイル
app/lang → resources/lang

・Publicディレクトリ
4.2からアップデートする際は、index.phpは5.0用を使用すること。

・テスト
app/tests → tests

・各種ファイル
Sass、Less、CoffeeScriptなどのファイルは resources/assets 配下へ格納することを推奨。

・Form&HTMLヘルパー
Form&HTMLヘルパーはデフォルト状態では使用できなくなり、使用したい場合は Laravel Collectiveなどから 自分で追加する必要がある。

・CacheManager
Illuminate\Cache\CacheManager → Illuminate\Contracts\Cache\Repository

・ページネーション
$paginator->links() → $paginator->render()
$paginator->getFrom() → $paginator->firstItem()
$paginator->getTo() → $paginator->lastItem()

getプリフィックスの削除
$paginator->getPerPage() → $paginator->perPage()
$paginator->getCurrentPage() → $paginator->currentPage()
$paginator->getLastPage() → $paginator->lastPage()
$paginator->getTotal() → $paginator->total()

・Beanstalk キュー
"pda/pheanstalk": "~2.1" → "pda/pheanstalk": "~3.0”

・リモート
Remoteコンポーネントは使用不可に。

・ワークベンチ
Workbenchコンポーネントは使用不可に。
ーーーーーーーーーーーーーーーーーーーー

今回も、やたら長かったですね!

最後まで読んでくれたあなたには、きっと幸せが訪れます。

Love ya !!

拍手[0回]

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のコーディングスタイル規約を採用した。
http://bashalog.c-brains.jp/15/08/13-100000.php

・Bladeへのサービス注入
Classのオブジェクトを直接Bladeに注入できるようになった。
(ただ、これをやると何となく誰かに怒られる気がしてならない。)
http://readouble.com/laravel/5/1/ja/blade.html#service-injection

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

・テスト設備の改善
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使おうかなって人は参考にしてみてくださいなー。

それでは、また!

拍手[0回]