2010年6月22日火曜日

PHPのフレームワーク比較

PHPにはフレームワークがあって、大きく3つ、ZendFramework, symfony, CakePHPがある。
どれを使うかは悩ましい。


PHPフレームワークの機能比較 - PHPプロ!
ってページがあるのだが、2年以上経って状況が変わってきてるし、自分なりにPHPのフレームワーク比較してみた。




CakePHP

私がこれまで仕事で使ったのはCakePHP。Ruby on Railsの開発経験もあり、参考書片手ですぐに開発に入れた。Ruby on Railsの知識の有無がポイントだが、非常に習得しやすかった。
しかし、やはり本家Ruby on Railsには開発効率はかなわなかった。PHPはRubyのように柔らかい記述が出来ない。
また、CakePHPはPHP4ベースなので、例外処理のようなPHP5スタイルの実装が出来ない。
既にCakePHPは主要メンバーがプロジェクトから離れて、Lithiumという別プロジェクトを立ち上げている。
PHPも5.3からクロージャーが使えるので、Railsに迫るフレームワークを期待している。

symfony

仕事でOpenPNEのカスタマイズをしようとしていて、早く習得したいのだが、思うようにいかない。
symfonyの売り文句「ドキュメントなどの情報の豊富さ」に騙されてはいけない。開発元がチュートリアルやリファレンスをちゃんと作っているのは評価できる。symfonyの開発元の会社はフランスにあるのだが、フランス人の書く文章が文学的なのか、翻訳の過程が悪いのか、非常に分かりづらい。
また、この2、3年で大規模な改修が何度か行われており、ネットでせっかく見つけた解決策が古いバージョンのものだったりして役に立たないことが多い。
symfonyもPHP6のリリースに合わせて更に大規模な改修を予定している。WEBフレームワークとしては良いのだが、正直振り回される。

ZendFramework

やはり真打はZendFramework。
正直Zend_Logしか使ったこと無いのだが、ざっと見た感じ、このフレームワークはJavaのフレームやライブラリー、Struts, Hibernate, Log4J, Junit...に似ている気がする。あれとこれを組み合わせて、ってふうにJavaっぽく設計するんだろう。それで苦労したことが何度あることか...
ZendFrameworkは、PHPの開発元、Zend Technologies社を中心に開発されている。PHPのこれまでの過程から、Zend社の開発指向として特徴的なのは「Javaの踏襲」にあると思う。あくまで推測だが。
Javaはこれまで最も成功した開発環境の1つである。Zend社は「成功したJavaを踏襲することは、PHPの成功につながる」と考えているのだと思う。
でも「Javaの踏襲」は我々PHPを利用する開発者にとって幸せなことなのだろうか?
話はそれたが、ZendFrameworkが今一番安心して使えるPHPのフレームワークだ。しかしJava並みに高度な設計ノウハウを必要とするフレームワークでもあると思う。


PHPにSmartyもフレームワークもいらなかった頃

8年ぐらい前なか、PHPが普及を始めた頃は、「静的なページのサイトにPHPを埋め込んでDBのデータを参照させたい」って依頼の仕事が多かった。当時はおおよそ1人での作業だったし、ちゃんとロジックとビューを分離してコーディングしていた。Smartyもフレームワークも必要無かった。古き良き時代だった。

0 件のコメント:

コメントを投稿