Symfony2のいいところ

ちょっと仕事が行き詰ったので、Symfony2のいいなーと思うところでも書いて頭をリフレッシュしよう。

  • シンプルなアーキテクチャ
  • DIコンテナ
  • Twig組み込み
  • アクションの戻り値がResponseオブジェクト
  • プレーンなPHPオブジェクト
  • Namespace

ぱっと思いつくのはこのあたりですかね。

シンプルなアーキテクチャ

とにかくFilterがなくなるのがとてもうれしいです。Symfony2の流れってとてもシンプルで

  • Kernelを起動
    • Bundleの登録
    • Containerの初期化
    • 各Bundleの起動
      • BundleごとにContainerの拡張など
  • (Requestの生成)
  • HttpKernelがRequestのハンドリング
    • RouterがRequestをパース
    • route情報を元にControllerの特定
    • Controllerの実行
  • Responseの送信

これだけですよ。HttpKernelによるReqestのハンドリングもEventDispatcherを使っているので疎結合+様々な拡張が可能です。

DIコンテナ

DIコンテナほしいなとー、symfony使っててふと思ったのでこんなエントリー書いてるんですけど。factories.ymlとかもう色々面倒くさいんですもの...。

Twig組み込み

Twigってかテンプレートの継承がすごくいい感じです。Symfony2に合わせてTwigの拡張性も上がってるし、Twigいいですよ。

アクションの戻り値がResponseオブジェクト

sfExecutionFilterとかほんと忌々しい。ていうかsfConfigにテンプレート名いれるとかどうなの...。アクション実行後も色々よくわからんことされるより、アクションの内部で「Responseできました!」ってとこまで行く方が色々扱いやすいです。

redirectやforwardも今までは例外投げて止めるとかやっていましたが、今回はそれぞれのメソッドの戻り値としてResponseを返します。

ただ、アクション内で毎回ビューの指定とか書かなきゃいけないのでちょっと面倒です。変数の受け渡し方法も従来のものと変わるのですが、見通しは良くなるかなと思います。

プレーンなPHPオブジェクト

Doctrine2とかValidatorとかがプレーンなPHPオブジェクトを扱えるようになったので、色々幅が広がるなーと思います。

Namespace

心おきなく名前空間使えるし、PHP 5.3で縛れるので5.3の機能も使っていいし、すごくありがたい。「PHP 5.3なんてまだ使えない!」ってのは知ったこっちゃないです。それはしゃーない。


まーまだまだ未完成ですけどね。前にバグ見つけたのでPull Request送ったら、バグ直すどころかごっそり実装が変わったりなんてこともありました。まだまだPreview Release版、当然のことですね。あー早く使いたい。