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を導入した最大の理由です。