次に、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. |