5

Symfony2 应用程序通常有一个实体集合。DoctrineEntityManager通常用于获取和持久化这些实体。

实体在整个应用程序的多个地方使用;对于许多实体和每个实体,将给定实体的处理加上获取/持久化服务包起来是有意义的。

例如,对于一个User实体,可能有一个UserServicewithfetchUser($user_id)persistUser(User $user)方法(或者可能只是fetch()and persist()方法,这只是一个示例)。

一个应用程序可以最终获得许多面向实体的服务,用于获取和持久化实体。此类服务的接口相似,处理的实体类型不同。

一个应用程序可以包含许多面向实体的服务似乎很常见。因此,命名和架构此类服务的问题是一个常见问题。

例如,对于一个需要创建 baseEntityService和 child的新应用程序UserServiceWidgetServiceProductService感觉是重复的,因为处理这些方面的方法应该是一个已解决的问题。

  • 是否有将此类实体管理相关服务引入 Symfony 应用程序的最佳实践?

    这感觉它应该是一个已解决的问题,可能需要遵循一个成熟的设计模式。

  • 是否有建议遵循的命名约定?

    我观察到,在不同的应用程序中,`UserManager` 和 `UserService` 都被选为服务名称。有通行的约定吗?

4

1 回答 1

1

至于命名,我不知道这种情况的约定,但是有Doctrine\ORM\EntityManager管理实体的类,所以我会Manager使用Service.

现在,谈谈实体管理服务:你真的需要这么多服务吗?如果该UserService::persistUser()方法只是持久化用户,为什么要使用自定义服务而不是默认服务EntityManager

此外,您不应该将存储库和持久化方法放在同一个类中。为实体使用自定义存储库不是更容易吗?

于 2012-07-17T18:49:08.600 回答