我試圖弄清楚是否可以在 YAML 語法中使用與 XML 語法中類似的構造來進行服務定義。特別是“構造”,在 XML 中,引數可以由工廠“行內”決議。
我有以下 XML 定義:
<service id="my_service_id" class="App\Some\Service">
<argument type="service">
<service class="Gaufrette\Filesystem">
<argument>%some_container_parameter%</argument>
<factory service="knp_gaufrette.filesystem_map" method="get" />
</service>
</argument>
<argument type="service" id="request_stack"/>
<argument>%some_other_container_parameter%</argument>
</service>
我不知道如何在 yaml 中表示這一點(或者甚至可能)。
我嘗試了以下方法:
my_service_id:
class: App\Some\Service
arguments:
- { class: Gaufrette\Filesystem, factory: ['@knp_gaufrette.filesystem_map','get'], arguments: ['%some_container_parameter%'] }
- '@request_stack'
- '%some_other_container_parameter%'
但這給了我以下錯誤訊息:
傳遞給 App\Some\Service::__construct() 的引數 1 必須實作介面 Gaufrette\FilesystemInterface,給定陣列
uj5u.com熱心網友回復:
您在 XML 版本的同一定義中定義了兩個服務。
雖然這在 XML 中是可能的,但我并不認為這是一個好主意。您可以通過自己定義每個服務輕松地做到這一點:
gaufrette.filesystem:
factory: ['@knp_gaufrette.filesystem_map','get']
arguments: ['%some_container_parameter%']
my_service_id:
class: App\Some\Service
arguments:
- '@gaufrette.filesystem'
- '@request_stack'
- '%some_other_container_parameter%'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/456404.html
上一篇:為什么我的SymfonyPdoSessionHandler不作業?
下一篇:迭代嵌套字典僅回傳第一個元素
