为了账号安全,请及时绑定邮箱和手机立即绑定

Symfony DI 将带有参数的新实例传递给构造函数而不创建大量服务别名?

Symfony DI 将带有参数的新实例传递给构造函数而不创建大量服务别名?

PHP
千万里不及你 2022-10-28 15:13:17
我有一个超级有用的类B,它有一个参数构造函数。我将在 Symfony DI 中定义其他服务时使用这个类无数次。B为了创建别名,如何避免重复服务定义 N 次?我想使用的伪代码:A: aruguments:  $someList:   - B 'b1'   - B 'b2'   - B 'b3'C: arguments:  $someOtherList:   - B 'b4'   - B 'b999'   - ...D:...为什么我有这么多B的?因为通过我的算法存在重复行为,并且B通过构造函数使用单个参数就足以永远不会重复该行为。为什么我不能B滚入Aor C?A并且C是集合/容器样式类,我会有很多。会在为每个组合创建的类中创建爆炸式增长。如果没有 DI,我会写什么代码?new A([ new B('b1'), new B('b2'), new B('b3'),]);...new C([ new B('b4'), new B('b99'), ...]);...new D([ ...那么,如何编写等效的 symfony 服务定义呢?
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

我发现的解决方案是内联服务定义!


您可以通过添加!service到包含必要数据的对象来做到这一点:


A:

 aruguments:

  $someList:

   - !service { class:B, arguments: ['b1']}

   - !service { class:B, arguments: ['b2']}

   - !service { class:B, arguments: ['b3']}

C:

 arguments:

  $someOtherList:

   - !service { class:B, arguments: ['b4']}

   - !service { class:B, arguments: ['b999']}

   - ...

D:


查看完整回答
反对 回复 2022-10-28
  • 1 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信