Zend Framework 2 tableGateway模式工作流与其他表

时间:2013-02-28 17:46:31

标签: database zend-framework2

我刚刚开始使用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);

...然后我想它会起作用,但服务管理器不应该在表类中可用。我可以使用工厂定义注入它,但这似乎不是一个好主意。

所以我想我的问题是,一个类(表示一个表并使用这个模式)将一些数据插入到另一个表中使用不同网关类的最佳方法是什么。或者是唯一/'正确'的方法?

1 个答案:

答案 0 :(得分:0)

这个问题的最佳方法似乎是在每个需要与其他表网关类交互的模型中实现ServiceLocatorAwareInterface接口。然后,您可以定义setServiceLocator(ServiceLocatorInterface $ sl)方法,该方法会自动传递对服务定位器的引用。