MapleでのDIConの使い方
DIContainerを作ってどうするのかというと、以下のようなものを想定している。
- 設定ファイル(maple.ini)にDIContainerの設定ファイルのパスを指定するセクションを追加
- Actionのパラメーターに対してDIContainerに登録されているコンポーネントをInjection
設定ファイルはこんな感じになるだろう。
[DIContainer] dicon.ini [Action] exampleDTO = "ref:exampleDTO" exampleDAO = "ref:exampleDAO"
「DIContainer」セクションはファイル名単独だとActionと同じディレクトリとなり、「/」が含まれていればBASE_DIR定数からの位置関係というように考えている。
これにより、上記の例だとActionはexampleDTOやexampleDAOに割り当てられる実際のクラスとの依存関係はなくなる。残念ながらPHP4ではInterfaceが使えないので処理系としてInterfaceが違うものがセットされているかというチェックはできないが、これを行うことにより、依存度がへり、それぞれのクラスに変更があったとしても最初に規定したインタフェースさえ変更しなければ変更の影響は最小限に抑えられる。
こんな感じのことをするためにつくってます。