かとじゅんの技術日誌

技術の話をするところ

PHP5でもSeasar2

http://s2container.php5.seasar.org/

Seasar2Javaだけでなく、PHP5でも利用できるようです。
PEARからインストールできます。

$container = S2ContainerFactory::create($PATH);
$greetingClient = $container->getComponent('greetingClient');
$greetingClient ->execute();

このような感じで呼び出せます。Javaの場合と変わりありません。

Javaの場合ですとウェブアプリケーションの構成としては Teeda + S2Dao とかになるかと思いますが、PHPの場合はS2Base.PHP5を使えば、プレゼンテーション層にMaple、Agavi、SymfonySmartyフレームワークとの組み合わせが簡単に選択できるみたいです。

MapleはビューにSmartyが使えます。(AgaviでSmartyの組合せで失敗するようです、、、)
Maple + Smarty + S2Dao.PHP5なら最強の組み合わせかと思います。かなりの生産性を発揮できそうです。

Mapleでよさうと思うのは、

  • コントローラが素のクラスでよい。つまり、どのクラスにも依存しなくてもよい。よって変更に強くできる。

 もっといえば、コントーラクラスのスーパークラスは自分で好きなように実装可能になりますので、継承関係もシンプルになります。

  • リクエストパラメータは、コントローラのプロパティを書いていれば自動的にインジェクトしてくれる。
  • 必須チェック、日付チェック、文字列長チェック、数値チェック、正規表現など、一般的によく使うバリデータが既に用意されている。
  • ビューにSmartyが使える。
  • コマンドラインからスケルトンコードを簡単に生成できる。

などなど、とりあえずよいのではないかと思います。

Zend Frameworkもよさそうですが、
コントローラはZend_Controller_Actionを必ず継承しないといけませんですね。
Zend_Controller_Actionとは依存関係が密になります。

ビューに関しては、PHPテンプレートはよくないと思いますが、Smartyのようなテンプレートが書けるようですね。これはいいと思います。http://framework.zend.com/manual/en/zend.view.scripts.html#zend.view.scripts.templates

結論的には、Zend FrameworkだとDIもAOPのサポートもないので、PHPのコード量は極端には減らせないと思います。