http://s2container.php5.seasar.org/
Seasar2はJavaだけでなく、PHP5でも利用できるようです。
PEARからインストールできます。
$container = S2ContainerFactory::create($PATH); $greetingClient = $container->getComponent('greetingClient'); $greetingClient ->execute();
このような感じで呼び出せます。Javaの場合と変わりありません。
Javaの場合ですとウェブアプリケーションの構成としては Teeda + S2Dao とかになるかと思いますが、PHPの場合はS2Base.PHP5を使えば、プレゼンテーション層にMaple、Agavi、Symfony、Smartyのフレームワークとの組み合わせが簡単に選択できるみたいです。
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のコード量は極端には減らせないと思います。