亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 88 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號