DIContainerに入っているものをActionのクラスにセットする方法
現状、デフォルトで以下のものがDIContainerに入ります。(webapp/config/base.iniにそのように書いているからですが。これは好きに増やすことができます。減らすとMapleが動かなくなります・・・)
- ConfigUtils
- Request
- Response
- ActionChain
- FilterChain
これらは maple.ini に以下のように書くことによりActionのクラスにセットできます。
[Action] request = ref:Request actionChain = ref:ActionChain
これを受けるためにActionのクラスでは以下のように受けてください。
class Example { var $request; var $actionChain function setRequest(&$request) { $this->request =& $request; } function setActionChain(&$actionChain) { $this->actionChain =& $actionChain; } }
ActionのクラスではDIContainerをインスタンス化しなくてもこのようにセットすることができます。これによりErrorListを取り出したり、次のActionへforwardしたりということができます。Actionのクラスで特定のクラスをnewしてそれに依存するということはしたくないってのがDIContainerを導入した最大の理由です。