有或没有状态的 Symfony2 服务

Symfony2 services with or without state

Symfony2 的新手,我一直在读 services in Symfony2 should be stateless,我认为它有点道理。

另一方面,我正在尝试重构一个庞大的 250 行 SomeController->listAction(),它创建了一个 table 数据,其中包含许多过滤器,总共有 4 个表单。为了创建所有这些东西,listAction() 调用了很多服务 FiltersManagerUserManagerApiFetcherPaginator 等...

我想将(几乎)所有代码从 listAction 移出到某些 MyUsefulClass,为此我需要 class 有状态。所以我可以看到 2 个选项:

我会选择第二个选项,但我不知道我是否遗漏了一些其他选项,而且我什至不确定保留无状态服务是否真的很重要...

我最终创建了 类 来完成这项工作,因为我认为服务在很多方面都是 Symfony 最好的东西之一(尽管它们有一些问题)。

为了保持我的服务无状态,我所做的是创建另一组 类,几乎只是具有某些属性的值对象。这些值对象保存我需要的状态,它们被传递到(and/or 返回)我的服务中的方法。

这种方法让我写得更多 类,但这对我来说很有意义,而且我可以清楚地将完成工作的代码与仅包含一些 属性 值的代码分开。