Symfony 管理实体

5 php symfony

正如我艰难地了解到,实体不应该存储任何真正的逻辑,因为它们的用途是存储数据。

另外,我读到控制器不应该有任何“真正的代码”,而只在需要时设置一些值并将它们指向实际用于工作的服务。(从控制器中修剪脂肪)。

我理解这些要点,即使我是 Symfony 的新手,我也知道带有“适用于所有事物”的代码的类是非常糟糕的做法(整个 Symfony Book 和 Symfony Cookbook 中的控制器确实看起来像那样)。易于创建,无法维护。而且,如果您遇到必须将代码解耦的情况,那么您会从中获得很多乐趣。但我明白了,因为这些书主要针对新人。

那么,我如何实际创建Entity Type Managers。他们是要走的路吗?

假设我有一个Image实体。我需要ImageManager来删除、更新、调用缩略图服务来创建缩略图等。它在哪里?它到底属于目录结构的什么地方?它不能是未映射的实体,因为它需要将服务注入其中。

最佳实践食谱文章没有提到类似的内容

Rob*_*ers 0

我不知道这种事情有最佳实践,但当我这样做时,我总是将我的经理放在Path\To\MyBundle\Manager命名空间中。我在我的项目中能找到做同样事情的第三方供应商的唯一例子是ElasticaBundle

关键是将管理器定义为服务并注入所需的依赖项。尝试让您的管理器依赖于接口而不是实际的类,以便更容易测试,并在必要时更容易更换各个组件。

让您的管理器实现一个定义所有公共方法的接口也是一个非常好的主意,就像RepositoryManager我上面链接的 ElasticaBundle 中的类所做的那样。