東京もすっかり寒くなりました。
東京では僕の地元の北海道とは違って、クーラーをつけていてもジャージとかの長袖で過ごす毎日です。
ストーブのパワーに脱帽しますね。
お久しぶりのwebシステム担当です。
さて、前回のブログでSymfony3について書かせて頂きましたが、
ついにSymfony4が正式にリリースされました!!
当サイトも既にSymfony4へのコンバートに取り掛かっており、来年頭には4系での運用に入る予定です。
ちなみに同時期にリリースされた3.4は長期サポートになっておりますのでリスクを背負わずにSymfonyを使いたい方はまだ4系にするべきではないですね。
この辺は好みにもよると思いますが。
(追記:2017年12月26日により、当サイトはSymfony4.0.2・PHP7.2.0での運用を開始致しました。)
そんなSymfony4ですが2系3系と比べて非常に大きく変わった印象を受けます。
と、言うコトで下記にまとめてみます。
Bundleless Applicationになった↓↓
これが最も大きく変わった部分ですね。Bundlelessにするのは想定外でした。
Symfonyといえば2系からはBundleを切りながら、そのBundle内で1アプリケーションの機能を完結させるフレームワーク設計だったのですが、それがなくなりました(1系は忘れましたが似たような機能があったような)。
僕個人の感想ですが、Bundleを切ることでその中で完結できる反面、各Bundleごとに似たようなロジックを書くことも多いなという印象がありました。
もちろん共通のBundleを切るなりclassを実装するなりしてそっちを見ろよという意見もあると思いますが。
Controller Action Namingの変更↓↓
毎度恒例だったController内のfunctionにActionサフィックスをつける必要がなくなりました。
DIが使いやすい↓↓
DIとはDependency Injection(依存性注入)のコトを指します。
3.3系の時からなのですが4系も変わらずDIが圧倒的に使いやすいです。それまでずっと設定ファイルがカオスになってましたからね^^;
PHPのフレームワークではLaravelのDIが衝撃的に使いやすかったのですが、今のSymfonyも同じくらい使いやすいと思います。
詳しいコトはこちらのリファレンスを見れば分かるかと思います。
Annotationで設定を記述するのがBest Practices↓↓
Best PracticesではRoutingなどはAnnotationで記述したほうがいいとのことです。
従来と同じく設定ファイルにまとめる方法でも出来ますが、デフォルトの設定がAnnotationでやろうねってなっていますね。
当サイトも現在、設定ファイルから各Annotationへの記述に寄せています。
正直、yamlで設定するほうがいいんですが。。。
ディレクトリ構造が変わった(おまけ)↓↓
メジャーバージョンアップの際は毎度好例なのですが今回もディレクトリ構造に変更があります。
また、設定ファイルにも変更があります。
まぁ儀式のようなものなのでリファレンスを読めば問題ないですね。
サンプルロジックもGitHubに上がっていますのでそれを見たほうがしっくりくるかもしれません。
僕はサンプルロジック等は見ていません。リファレンスを見た結果、内部で使われているclass何かはほとんど同じと判断したので。
思想は大きく変わりましたが、1つ1つのclass自体はほとんど変化はないように思えます。
個人的には、旧バージョンより非常に使いやすくなった印象を持ちました。
これからバグなんかも出てきて何度かマイナーバージョンアップがあるかと思います。
Symfony4がどのように評価されるか今から楽しみです。