2016-08-12 10 views
1

サービスの定義例のparamsの文字列と "通話" 私は変換したい:symfonyのYAMLフォーマット変換:

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

そして、これがにコンパイルします。私の質問#38822898によると

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

私は次の試してみてください。

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

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

そして、これがにコンパイルします。

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

だから、2番目のYAMLの例ではどこに問題がありますか?

UPD#1

私の前の質問によると、次のYAMLの例でも、一つだけ、 "追加" 方法の2つの呼び出しにコンパイルされません:

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%" 

「書き換え」では、2つのaddスカラは同じシーケンスの一部ですが、オリジナルでは親シーケンスのさまざまな要素の最初の要素です。

同じ問題が2番目の例で発生します。

+0

ええと、私はあなたが提案したように、すでに " - "を追加しようとしました。もう一度追加してください。o_Oで動作します。マジック。またはキャッシュ。 @serviceの2番目の例と同じです - 今もworkerdです。 – Alex

+0

2つのウィンドウをhttp://yaml-online-parser.appspot.comに開いたままにしておくとよいでしょう。元のものと1つは書き換えあり(少なくとも実験中)。対応するJSONに違いがある場合(簡単に気付くはずです)、入力されたYAMLには意味の違いがあります。 – Anthon

関連する問題