次に、ActionコンポーネントにServiceコンポーネントをInjectしてみます。
次のようなActionクラスをclassesディレクトリに作成します。@S2Componentアノテーションでコンポーネント名を指定することができます。 また、Serviceクラスのインスタンスを受け取る$serviceプロパティを実装します。アクセス修飾子をpublicとするこで、プロパティインジェクションにより ServiceコンポーネントがInjectされます。indexActionメソッドでは、InjectされたServiceコンポーネントを使用して処理を行います。
<?php /** * @S2Component('name' => 'act') */ class Action{ public $service = null; public function indexAction() { $result = $this->service->add(1, 2); } }
次のようなServiceクラスを作成します。
<?php class Service { public function add($a, $b) { return $a + $b; } }
ActionクラスやServiceクラスの読み込みはs2import関数で行います。 S2ApplicationContext::getメソッドでActionコンポーネントを取得すると、$serviceプロパティには、ServiceクラスのインスタンスがInjectされています。
<?php require_once('S2Container.php'); s2import(dirname(__FILE__) . '/classes'); $action = s2get('act'); var_dump($action);
NOTE | |
---|---|
このExampleは examples/quickstart/quickstart020.php にあります。 |
© Copyright The Seasar Foundation and the others 2005-2010, all rights reserved. |