0

在 Zend Framework 2 中,我们使用工厂来启动类。对于我们使用的工厂FactoryInterface,它使您能够使用 ServiceManager。

我们的问题只是反复出现的依赖。我们有以下

我们有PlaceRepositoryPlaceEntity

PlaceRepostory是 the 的依赖项,PlaceEntity因此它知道它需要返回哪个实体。然而,它PlaceEntity也需要PlaceRepostory这样它才能得到一个父位置。(比如获取城市 x 的国家(城市和国家都是一个地方))。

这以永远存在的依赖而告终。

现在我们可以在实体中注入服务定位器,但是您失去了轻松测试的能力,并且您看不到它依赖于哪个类。

那么对于这个问题是否有其他选项或更好的选项,因此您仍然可以拥有依赖关系,但它不会像 inity 循环那样重复出现?

4

1 回答 1

1

如果依赖是分层的,则将其分为所有权和成员资格。尝试添加指向成员和所有者的对象属性。由于 PlaceRepository 拥有 PlaceEntity 对象,您可以这样实现

instancePlaceRepository->members['instancePlaceEntityName'] = instancePlaceEntity;

instancePlaceEntity->owner = instancePlaceRepository;

这将使一切井井有条。

你可以走下来的成员和爬上业主。

如果您有 Country->City->Street 类型的依赖项,所有内容都是 placeEntity 并且单个 placeRepository 包含所有内容,然后消除 PlaceRepository 的所有权,这次围绕场所构建层次结构。国家->成员有城镇和城市->成员有街道、建筑物等

于 2013-04-02T11:32:52.190 回答