2010年2月16日火曜日

PHPでDependency Injection Container

依存注入

英語だけど、DIとは何かとDIコンテナをどう実装するかについて分かりやすくまとめてるサイトを発見!!てかSymfony関連サイト?Dependency Injection Reinventing how you manage PHP classes

セッションDI

セッションの場合は、PHPのビルドインセッションモジュールか、DB使うか、memcachedを使うか(レンサバは厳しい)と方法があるので、インタフェースで各クラス間のメソッドと振る舞いを共通化するようにしといて、簡単に乗り換えができるようにするというのは極自然に理解できますね。でも必要に迫られない限りはやらなくてもいい部類です。GoFのデザパタには入ってないと思うけど、広い意味でのデザインパターン(MVCなども含む)って必要に迫られない限りはやらない方が賢明だと思います。

別件で

依存注入は普通にやるし、こういうのやりだしたらインターフェースとか抽象クラス使ったりとなりますが、ログを取るクラスの場合ってどう実装すればいいんだろ。グループウェアの活動履歴みたいなのを、クラス単位で取りたい場合って、それぞれのクラスにログクラスのインスタンスを注入すんのかな?? PHPだとそれが限界でしょうか。もう少し調べてみよう。できれば、各クラスはログのことを全く意識しないでいいような作りにしたいし。継承もせずに。というか単一継承なので途中でLoggableみたいな継承を入れると、それ以降のサブクラスも全部影響受けるから避けたいです。

0 件のコメント: