0

バージョン 1 を長い間使用してきたので、Zend Framework 2 データベースの理論を理解しようとしています。ビジネス ロジックで 1 つのテーブル オブジェクトが操作を別のテーブル オブジェクトに延期する必要がある場合に、多くのテーブルを操作する「正しい」方法を見分けようとしています。

既存のゲートウェイ クラスで別のテーブル クラスをインスタンス化するのは、時間のかかる骨の折れるプロセスのようです。サービスマネージャーファクトリーと同じプロセスを使用する場合、たとえば

$yourData = $myData['thisPart'];
$dbAdapter = $this->_myTableGateway->getAdapter();
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new TestObject());
$tbl = new TestTable(new TableGateway('tbl_name', $dbAdapter, null, $resultSetPrototype));
$tbl->insertSomeData($yourData);

...それならうまくいくと思いますが、サービスマネージャーはテーブルクラスで利用できるはずがありません。ファクトリ定義を使用して注入することもできますが、それは良いアイデアとは思えません。

したがって、私の質問は、クラス (テーブルを表し、このパターンを使用する) が別のゲートウェイ クラスを使用して別のテーブルにそのデータの一部を挿入するための最良の方法は何かということだと思います。または、上記の方法は唯一の/「正しい」方法ですか?

4

1 に答える 1

0

この問題に対する最善のアプローチは、他のテーブル ゲートウェイ クラスと対話する必要がある各モデルに ServiceLocatorAwareInterface インターフェイスを実装することです。次に、Service Locator への参照が自動的に渡される setServiceLocator(ServiceLocatorInterface $sl) メソッドを定義できます。

于 2013-03-01T09:52:45.717 に答える