PHP: SoapClient Request modifizieren

Vor ein paar Tagen stand ich vor dem Problem, dass ich an einen Service mehrere XML-Nodes mit dem gleichen Element-Namen übergeben musste. Im XML ja auch kein Problem, nur leider etwas blöd, wenn man ein Array an den Soap-Client übergibt. In diesem Fall steht man etwas doof dar, weil man Array-Keys ja schlecht doppelt und dreifach vergeben kann.

Also dachte ich mir: Einfach den XML-Request des Clients modifizieren. Das ist aber leichter gesagt als getan. Ich habe zumindest keine Funktion gefunden, welche man überschreiben könnte um sich in den Serialisierungsprozess zu hängen. Also musste ich am Ende

  • doRequest überschreiben,
  • das Ganze Zeug wieder in ein Objekt wandeln,
  • mit xPath die XML-Node rausziehen,
  • die neuen Elemente einfügen
  • und alles wieder zusammenpacken.

Puh. Das hatte ich mir etwas einfacher vorgestellt… Außerdem ist das Ganze nur bei recht überschaubaren Requests zu Empfehlen. Ansonsten einfach von Arrays abweichen und Objekte übergeben. Dann ist man auf der sicheren Seite. Hier der Code dazu:

Fertig.

Über

Jahrgang 87, gelernter Softwareentwickler und fast ein Jahrzehnt Erfahrung im Bereich Web-Entwicklung mit PHP und Web-Design. Diese Eigenschaften machen mich zu einem geeigneten und geschätzten Ansprechpartner für die Umsetzung Ihres Projektes. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.