2016-08-12 3 views
1

Service-Definition Beispiel möchte ich konvertieren:Symfony YAML-Format Konvertierung: "Anrufe" mit String params

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

Und das kompilieren:

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

Nach meiner Frage #38822898 Ich versuche weiter:

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

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

Und diese Kompilierung:

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

Also, wo ist das Problem in zweiten YAML Beispiel?

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

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

Compiliert zu:

UPD # 1

Nach meiner vorherigen Frage, die nächste YAML Beispiel auch zwei Anrufe von "add" Verfahren, nicht nur eine kompilieren

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

Antwort

2

Ihre Expansion fehlt ein -, sollte es sein:

In Ihrem "rewrite" sind die zwei add Skalare Teil derselben Sequenz, aber in Ihrem Original sind sie die ersten Elemente verschiedener Elemente der Elternsequenz.

Das gleiche Problem tritt bei dem zweiten Beispiel auf.

+0

Hmm, ich habe schon versucht, verpasst "-" hinzuzufügen, wie Sie vorschlagen. Fügen Sie es jetzt wieder hinzu - und es funktioniert o_O. Zauber. Oder Cache. Das gleiche gilt für das zweite Beispiel mit @service - jetzt auch workerd. – Alex

+0

Vielleicht eine gute Idee, zwei Fenster offen zu halten für http://yaml-online-parser.appspot.com, eine mit dem Original und eine mit dem Neuschreiben (zumindest während des Experimentierens). Wenn der entsprechende JSON Unterschiede aufweist (die Sie leicht bemerken können), hat Ihre Eingabe-YAML semantische Unterschiede. – Anthon