PHP links einfügen und auf "Konvertieren" klicken — wir machen XML darausPHP-Code einfügen

Was dieses Tool macht

Wer schon mal einen XML-Payload für einen PHP-SoapClient-Aufruf, einen WordPress-Plugin-Export oder eine alte Partner-Integration zusammengestümpert hat, die immer noch XML spricht, weiß, wie viel Fleißarbeit das ist. PHP hier einfügen und du bekommst in einem Rutsch wohlgeformtes XML zurück. Eine Klasse mit Constructor Promotion, eine ganze Value-Object-Datei oder eine gefüllte Instanz — gleiches Ergebnis: ein komplettes XML-Dokument, bei dem jede Property erhalten bleibt.

Das ist kein blindes String-Replace. Der Konverter liest modernes PHP 8+ richtig: im Konstruktor promotete Properties verhalten sich wie deklarierte, readonly-Felder kommen als normale Elemente durch, typisierte Properties (string, int, float, bool) behalten ihre Typen, DateTimeInterface-Werte werden als ISO-8601-Strings gerendert, null wird zu einem leeren Element (statt weggelassen), und Arrays werden zu Container-Elementen mit einem Child pro Eintrag — so wie es SimpleXMLElement oder DOMDocument typischerweise produzieren würden.

Klassenstruktur und Metadaten werden berücksichtigt. Jede Top-Level-Klasse wird zum Root-Element mit dem Klassennamen, öffentliche Properties werden zu Child-Elementen in Deklarationsreihenfolge, verschachtelte Value Objects werden inline entfaltet, und array-Properties werden zu Wrapper-Elementen. PHP-Attribute wie #[XmlRoot("x")] oder Docblock-Tags wie @XmlElement("x") benennen Elemente da um, wo du es festlegst. Eloquent-Modell aus Laravel einfügen, ein Symfony Serializer-DTO oder ein schlichtes Value Object — das XML kommt so raus, wie es ein handgeschriebener SoapVar oder ein SOAP-Request-Body tun würde.

So benutzt du es

Drei Schritte. Gleicher Ablauf, ob du eine Klasse einfügst oder den ganzen <code>src/Entity</code>-Ordner.

1

PHP einfügen (oder das Beispiel probieren)

Wirf dein PHP in den linken Editor, so wie es ist. Eine Klasse mit Constructor Promotion, ein readonly-Value-Object, mehrere Klassen oder eine gefüllte Instanz — alles okay. Klick auf Beispiel laden, um vorher ein realistisches Order-Beispiel zu sehen.

Du musst den <?php-Tag nicht entfernen, keine Namespaces strippen, keine Docblocks löschen. Lass den Code so, wie er in deiner IDE aussieht. Einfach einfügen.

2

Konvertieren klicken

Klick auf den grünen Konvertieren-Button. Das Tool liest das PHP, behält jede Klasse und Property und baut das XML in einem Rutsch. Ein kurzes Schimmern zeigt, dass es läuft.

3

XML kopieren

Das rechte Panel füllt sich mit eingerücktem, wohlgeformtem XML, das jeder standardkonforme Parser akzeptiert. Pack es in einen SoapClient-Request, eine PHPUnit-Fixture, eine WordPress-Export-Datei oder ein Beispiel in der API-Doku.

Wann das wirklich praktisch ist

SoapClient-Request-Fixtures bauen

Du redest über <code>SoapClient</code> mit einem Legacy-SOAP-Endpoint und brauchst einen Request-Body, der zu einer PHP-Klasse passt. Klasse einfügen, XML nehmen, mit <code>SoapVar</code> umschließen oder an <code>__doRequest()</code> weiterreichen.

WordPress/Drupal XML-Exporte

Eine Custom-Post-Type-Klasse oder eine Drupal-Entity mit 20 Feldern wird zu einem sofort editierbaren WXR- oder XML-Export-Template — kein Handaufbau mehr von Element-Strukturen, die zur PHP-Form passen sollen.

XML-Responses in Symfony/Laravel

Deine API gibt meistens JSON zurück, aber ein Client will immer noch XML. DTO einfügen, XML-Envelope holen, in ein Symfony-Response- oder Laravel-ResponseFactory-Beispiel packen und weitermachen.

PHPUnit-Fixtures und Snapshot-Tests

Value-Object-Instanzen aus deinen Unit-Tests in XML-Fixture-Dateien für Integrationstests, Contract-Tests oder gemockte SOAP-Server umwandeln — ohne ein passendes XML-Template nach Augenmaß von Hand zu schreiben.

Häufige Fragen

Kommt es mit Constructor Promotion und readonly-Properties klar?

Ja. Im Konstruktor promotete Parameter (public string $orderId innerhalb von __construct) werden zu Child-Elementen, genauso wie deklarierte Properties. readonly wird bei der Serialisierung wie eine normale Property behandelt — das XML ist identisch. Auch PHP 8.2s readonly class funktioniert.

Kann ich mehrere Klassen auf einmal einfügen?

Ja — füg einen ganzen Entity-Ordner ein oder eine einzelne Datei mit mehreren Klassen. Jede Top-Level-Klasse kommt mit entfalteten verschachtelten Typen und übernommenen Elternklassen-Properties durch. Traits werden so behandelt, dass sie ihre Properties beisteuern. Nichts verschwindet stillschweigend.

Wie werden DateTime, null, float und bool behandelt?

Instanzen von DateTimeInterface (DateTime, DateTimeImmutable) werden als ISO-8601-Strings gerendert. null wird zu einem leeren Element (<field/>), statt weggelassen zu werden, damit die XML-Form konsistent bleibt. float benutzt schlichte Dezimalnotation ohne locale-spezifische Trennzeichen, und bool wird als Text true/false serialisiert — genau wie SimpleXMLElement es ausgibt.

Was ist mit Arrays und verschachtelten Objekten?

Array-Properties werden zu Container-Elementen mit einem Child pro Eintrag. Ein /** @var OrderItem[] */ public array $items wird zu <items><OrderItem/><OrderItem/></items>. Assoziative Arrays nehmen ihre String-Keys als Element-Namen. Verschachtelte Value Objects werden inline entfaltet — genau so, wie DOMDocument den Baum bauen würde.

Wird mein Code gespeichert?

Dein PHP wird zur Konvertierung ans Backend geschickt und nicht persistiert — wir loggen den Payload nicht. Wie immer bei Online-Tools: Wenn der Code echt sensitive Literale enthält (DB-Passwörter, API-Keys), vorher maskieren oder durch Mocks ersetzen.

Was, wenn der Code magische Methoden oder dynamische Properties benutzt?

Dynamische Properties (die zur Laufzeit über __set oder stdClass-Casting dazukommen) und magische Getter (__get) lassen sich aus statischem Code allein nicht ableiten. Das Tool liest deklarierte Properties, im Konstruktor promotete Parameter und explizite Zuweisungen. Wenn ein Feld nur über __get existiert, deklarier es als Property, damit der Konverter es mitbekommt.

Andere Tools, die du brauchen könntest

PHP zu XML ist nur ein Puzzleteil. Diese Tools passen gut dazu: