Symfony2应用程序通常具有一组实体。 Doctrine EntityManager
通常用于获取和持久化这些实体。
实体在整个应用程序中的多个位置使用;对于许多实体和每个实体,包装给定实体的处理以及在服务中提取/持久化是有意义的。
例如,对于User
实体,可能有UserService
个fetchUser($user_id)
和persistUser(User $user)
方法(或者只有fetch()
和persist(
})方法,这只是一个例子。)
应用程序最终可以获得许多面向实体的服务,用于获取和保留实体。这些服务的接口类似,处理的实体类型不同。
一个应用程序可以包含许多面向实体的服务似乎是一种常见的情况。因此,命名和构建此类服务的问题是一个常见问题。
对于要求创建基础EntityService
和子UserService
的新应用程序,WidgetService
和ProductService
类感觉重复,就像手段一样处理这些方面应该是一个解决的问题。
是否有将此类与实体管理相关的服务引入Symfony应用程序的最佳做法?
这感觉它应该是一个已解决的问题,或许是要遵循的良好设计模式。
是否有建议遵循的命名约定?
我观察到,在不同的应用程序中,“UserManager”和“UserService”都被选为服务名称。是否有普遍的约定?
答案 0 :(得分:1)
至于命名,我知道没有针对这种情况的约定,但是有Doctrine\ORM\EntityManager
类来管理实体,所以我会使用Manager
而不是Service
现在,谈论实体管理服务:你真的需要这么多服务吗?如果UserService::persistUser()
方法只是为了保留用户,那么为什么使用自定义服务而不是默认EntityManager
?
此外,您不应将存储库和持久化方法放在同一个类中。是否更容易为实体使用自定义存储库?