2016-08-12 36 views
1

服務定義的例子,我想轉換:的Symfony YAML格式轉換: 「來電」 用繩子PARAMS

MyService: 
    class: MyClass 
    calls: 
     - [add, ["%param1%", "%param2%"]] 
     - [add, ["%param3%", "%param4%"]] 

這編譯爲:

$instance->add('param1', 'param2'); 
$instance->add('param3', 'param4'); 

根據我的問題#38822898下一個我嘗試:

MyService: 
    class: MyClass 
    calls: 
     - 
      - add 
      - 
       - "%param1%" 
       - "%param2%" 

      - add 
      - 
       - "%param3%" 
       - "%param4%" 

這編譯到:

$instance->add('param1', 'param2'); 

那麼,第二個YAML例子中的問題在哪裏呢?

UPD#1

根據我剛纔的問題,接下來的YAML例子也不纂要 「加」 法的兩個電話,只有一個:

MyAnotherService: 
    class: MyAnotherClass 
    factory: 
     - MyFactoryClass 
     - create 
    calls: 
     - 
      - add 
      - 
       - >- 
        @=service('AnotherService1').create(
         service('AnotherService2'), 
         service('AnotherService3') 
        ) 

      - add 
      - 
       - >- 
        @=service('AnotherService1').create(
         service('AnotherService3'), 
         service('AnotherService4') 
        ) 

編譯爲:

$instance->add($this->get("AnotherService1")->create($this->get("AnotherService2"), $this->get("AnotherService3"))); 

回答

2

您的擴展是缺少-,它應該是:

MyService: 
    class: MyClass 
    calls: 
     - 
      - add 
      - 
       - "%param1%" 
       - "%param2%" 
     -   # < this one is missing 
      - add 
      - 
       - "%param3%" 
       - "%param4%" 

在您的「重寫」中,兩個add標量是同一個序列的一部分,但在您的原始中,它們是父序列中不同元素的第一個元素。

第二個例子發生同樣的問題。

+0

嗯,我已經嘗試添加錯過「 - 」,如你所建議的。現在再次添加 - 它工作o_O。魔法。或緩存。第二個示例與@service相同 - 現在也是workerd。 – Alex

+0

也許一個好主意,讓兩個窗口打開http://yaml-online-parser.appspot.com,一個與原始和一個與重寫(至少當你正在試驗)。如果相應的JSON存在差異(您應該能夠輕鬆注意到),則您的輸入YAML具有語義差異。 – Anthon