PHPフレームワーク Symfony いよいよバージョン2に | モンスター・ラボTech/Designブログ

モンスター・ラボTech/Designブログ

株式会社モンスター・ラボのテクノロジスト、デザイナーによる持ち回りブログです。

こんにちは、山口です

今回は2011年7月にリリースされて注目を浴びている、
PHPフレームワークSymfony2について、紹介します。

これまで使われていたSymfony1系には、
高機能で、中~大規模サイト向け、
多人数で開発するときの開発効率の向上
といったメリットがありました。

一方、シンプルで軽量高速な、CakePHPや、Codeigniterと比較すると、
処理の重さや学習コストの増加といったデメリットもありました。

私も、2年ほどSymfonyを業務で使っていて、
高機能で、多人数でも安全に開発できるSymfonyの恩恵を日々享受していますが、
もう少しシンプルで、柔軟だったらと思うこともよくあるので、
今後のSymfony2の発展には多いに期待しています。

■Symfony2の特徴
○動作環境
Symfony 2.0は名前空間を利用しているので、PHP 5.3以降に対応しています。

○インストール
インストールは、ソースをダウンロードして展開し、
cache,logsディレクトリを書き込めるようにするだけなので簡単です。
DB設定などを行う画面が用意されていて、少しフレンドリーになっています。

Symfony のインストールと設定 | Symfony2日本語ドキュメント

Symfony2をインストールする

○高速になった?
6月22日に開催された、The State of Symfony2オンラインカンファレンスの
開発者によるスライドをみると、Symfony2で加わった新しい特徴を知ることができます。

特に「Killer Feature of Symfony2」と謳われている
状況によっては「symfony 1.xの約80倍高速」になるというキャッシュシステムは期待大です。

○Symfony2の全体像
大雑把にSymfony2の全体像をつかむには、以下の記事がお勧めです。
特に、コントローラ周りは、大幅に改善されてシンプルになっているようです。
○バンドル
バンドルというのは、Symfony2の新しい機構で、
他のソフトやフレームワークでいう、プラグインのようなものです。

しかし、Symfony2では、コアフレームワークの機能から自分の作るアプリまで
すべてがバンドルとして構成されるのが大きな特徴になっています。
Symfony2でMongoDBを使うバンドルとか色々配布されています。

バンドルは、
php app/console generate:bundle
という風にコンソールから自動生成することができます。

自分でWebアプリを作る場合は
バンドルを作成したら、その中にルーティング、コントローラ、テンプレートを配置します。
Symfony1のmoduleに近い構造です。

1.ルートの作成(routing.yml)
 (src/Acme/HelloBundle/Resources/config/routing.yml)

2.コントローラの作成()
 (src/Acme/HelloBundle/Controller/HelloController.php)

3.テンプレートの作成
 (src/Acme/HelloBundle/Resources/views/Hello/index.html.twig)

そして、routing.ymに記載したURLにアクセスすれば、
ページが表示されるわけですね。

※参考

○ビュー
Symfony2では、ビューにTwigというテンプレートエンジンが採用されています。
これまでは、PHPをテンプレートに使っていて、なんでも書ける代わりにロジックが
増えて混乱の原因になっていました。

Twigはビューとしてできることが、いい意味で制限されているので、
アクションとビューの役割分担が明確になって良いと思います。

また、Twigはテンプレート継承ができるので、これまでlayoutで実現していた
ビューの構造化もすっきりと実現できます。



○フォーム
Symfony1のフォームフレームワークは、一番習得するのに苦労するところですが、
画面からのフォーム入力、バリデーション、データベースへの登録・更新をとても
簡単に扱うことができます。

しかし、ちょっと複雑な入力フォームをカスタマイズしようとすると、
急に難易度が上がって、膨大な時間がかかるという厄介なところもありました。

Symfony2では、フォームやコントローラにビジネスロジックが混在するのを防いで、
よりシンプルで再利用可能な仕組みに改善されているようです。



■最後に
以上、Symfony2の概要を把握するための情報をざっと書いてみました。
Symfony2を自分で動かしてみたい!という人のガイドになればと思います。