有或没有状态的 Symfony2 服务
Symfony2 services with or without state
Symfony2 的新手,我一直在读 services in Symfony2 should be stateless,我认为它有点道理。
另一方面,我正在尝试重构一个庞大的 250 行 SomeController->listAction()
,它创建了一个 table 数据,其中包含许多过滤器,总共有 4 个表单。为了创建所有这些东西,listAction()
调用了很多服务 FiltersManager
、UserManager
、ApiFetcher
、Paginator
等...
我想将(几乎)所有代码从 listAction
移出到某些 MyUsefulClass
,为此我需要 class 有状态。所以我可以看到 2 个选项:
- 创建
MyUsefulClass
作为自定义模型 class,但我需要手动创建服务的新实例。
- 将
MyUsefulClass
定义为服务,以便我可以注入所有其他服务,但我需要为该服务提供一个状态。
我会选择第二个选项,但我不知道我是否遗漏了一些其他选项,而且我什至不确定保留无状态服务是否真的很重要...
我最终创建了 类 来完成这项工作,因为我认为服务在很多方面都是 Symfony 最好的东西之一(尽管它们有一些问题)。
为了保持我的服务无状态,我所做的是创建另一组 类,几乎只是具有某些属性的值对象。这些值对象保存我需要的状态,它们被传递到(and/or 返回)我的服务中的方法。
这种方法让我写得更多 类,但这对我来说很有意义,而且我可以清楚地将完成工作的代码与仅包含一些 属性 值的代码分开。
Symfony2 的新手,我一直在读 services in Symfony2 should be stateless,我认为它有点道理。
另一方面,我正在尝试重构一个庞大的 250 行 SomeController->listAction()
,它创建了一个 table 数据,其中包含许多过滤器,总共有 4 个表单。为了创建所有这些东西,listAction()
调用了很多服务 FiltersManager
、UserManager
、ApiFetcher
、Paginator
等...
我想将(几乎)所有代码从 listAction
移出到某些 MyUsefulClass
,为此我需要 class 有状态。所以我可以看到 2 个选项:
- 创建
MyUsefulClass
作为自定义模型 class,但我需要手动创建服务的新实例。 - 将
MyUsefulClass
定义为服务,以便我可以注入所有其他服务,但我需要为该服务提供一个状态。
我会选择第二个选项,但我不知道我是否遗漏了一些其他选项,而且我什至不确定保留无状态服务是否真的很重要...
我最终创建了 类 来完成这项工作,因为我认为服务在很多方面都是 Symfony 最好的东西之一(尽管它们有一些问题)。
为了保持我的服务无状态,我所做的是创建另一组 类,几乎只是具有某些属性的值对象。这些值对象保存我需要的状态,它们被传递到(and/or 返回)我的服务中的方法。
这种方法让我写得更多 类,但这对我来说很有意义,而且我可以清楚地将完成工作的代码与仅包含一些 属性 值的代码分开。