PHP till XML-konverterare
Klistra in PHP-klasser eller objekt. Få ren XML tillbaka.
Vad verktyget gör
Om du någon gång har fått snickra ihop en XML-payload för hand inför ett PHP-anrop med SoapClient, en WordPress-pluginexport eller en gammal partnerintegration som fortfarande pratar XML, vet du hur mycket tjatjob det är. Klistra in PHP här så får du tillbaka välformad XML i ett svep. En klass med constructor promotion, en hel fil med value objects eller en populerad instans — samma resultat: ett komplett XML-dokument där varje egenskap bevaras.
Det är ingen blind sträng-ersättning. Konverteraren läser modern PHP 8+ ordentligt: constructor-promotade egenskaper beter sig som deklarerade, readonly-fält kommer ut som vanliga element, typade egenskaper (string, int, float, bool) behåller sina typer, DateTimeInterface-värden renderas som ISO-8601-strängar, null blir ett tomt element (istället för att droppas), och arrayer blir containerelement med ett barn per post — precis som SimpleXMLElement eller DOMDocument typiskt skulle producera.
Klassens struktur och metadata respekteras. Varje top-level-klass blir ett rotelement med klassens namn, publika egenskaper blir barnelement i deklarationsordning, nästlade value objects viks ut inline, och array-egenskaper blir omslagselement. PHP-attribut som #[XmlRoot("x")] eller docblock-taggar som @XmlElement("x") byter namn på element där du anger det. Klistra in en Eloquent-modell från Laravel, en DTO från Symfony Serializer eller ett vanligt value object — XML-en kommer ut som en handskriven SoapVar eller ett SOAP-request-body skulle se ut.
Så använder du det
Tre steg. Samma flöde oavsett om du klistrar in en klass eller hela <code>src/Entity</code>-mappen.
Klistra in din PHP (eller prova exemplet)
Släpp in din PHP i editorn till vänster som den är. En klass med constructor promotion, ett readonly value object, flera klasser eller en populerad instans — allt funkar. Klicka på Läs in exempel för att se ett realistiskt Order-exempel först.
Du behöver inte ta bort <?php-taggen, slita bort namespaces eller ta bort docblocks. Låt koden se ut som i din IDE. Klistra bara in.
Tryck på Konvertera
Klicka på den gröna Konvertera-knappen. Verktyget läser PHP-koden, behåller varje klass och egenskap, och bygger XML-en i ett svep. Ett kort skimmer visas medan det kör.
Kopiera XML-en
Högerpanelen fylls med indenterad, välformad XML som alla standardkompatibla parsers accepterar. Släpp in den i en SoapClient-request, en fixture till PHPUnit, en WordPress-exportfil eller ett exempel i API-dokumentationen.
När det faktiskt kommer till nytta
Bygga fixtures för SoapClient-requests
Du pratar med en legacy-SOAP-endpoint via <code>SoapClient</code> och behöver en request-body som matchar en PHP-klass. Klistra in klassen, ta XML-en, vira den i <code>SoapVar</code> eller mata den till <code>__doRequest()</code>.
XML-exporter i WordPress/Drupal
En klass för en custom post type eller en Drupal-entitet med 20 fält blir en färdig WXR- eller XML-exportmall — inget mer handpillande med elementstrukturer för att matcha PHP-formen.
XML-svar i Symfony/Laravel
Ditt API ger mestadels JSON, men en klient vill fortfarande ha XML. Klistra in DTO:n, ta XML-kuvertet, släpp in i ett exempel med Symfony Response eller Laravel ResponseFactory och gå vidare.
Fixtures till PHPUnit och snapshot-tester
Gör om value-object-instanser från dina enhetstester till XML-fixturefiler för integrationstester, kontraktstester eller mockade SOAP-servrar — utan att snickra ihop en matchande XML-mall på öga.
Vanliga frågor
Hanterar den constructor promotion och readonly-egenskaper?
Ja. Constructor-promotade parametrar (public string $orderId inne i __construct) blir barnelement precis som deklarerade egenskaper. readonly behandlas som en vanlig egenskap vid serialisering — XML-en blir identisk. PHP 8.2:s readonly class funkar också.
Kan jag klistra in flera klasser samtidigt?
Ja — klistra in en hel entity-mapp eller en enda fil med flera klasser. Varje top-level-klass kommer ut med nästlade typer utvikta och egenskaper från föräldraklassen inbakade. Traits hanteras så att de bidrar med sina egenskaper. Inget försvinner tyst.
Hur hanteras DateTime, null, float och bool?
Instanser av DateTimeInterface (DateTime, DateTimeImmutable) renderas som ISO-8601-strängar. null blir ett tomt element (<field/>) istället för att hoppas över, så XML-formen är konsekvent. float använder vanlig decimalnotation utan locale-specifika separatorer, och bool serialiseras som texten true/false — precis vad SimpleXMLElement producerar.
Hur blir det med arrayer och nästlade objekt?
Array-egenskaper blir containerelement med ett barn per post. Ett /** @var OrderItem[] */ public array $items blir <items><OrderItem/><OrderItem/></items>. Associativa arrayer använder sina strängnycklar som elementnamn. Nästlade value objects viks ut inline — på samma sätt som DOMDocument skulle bygga trädet.
Sparas min kod?
Din PHP skickas till backenden för konvertering och sparas inte — vi loggar inte payloaden. Som alltid med onlineverktyg: om koden innehåller riktigt känsliga literaler (DB-lösenord, API-nycklar), städa eller mocka bort dem innan du klistrar in.
Vad om koden använder magiska metoder eller dynamiska egenskaper?
Dynamiska egenskaper (som läggs till i runtime via __set eller castning till stdClass) och magiska getters (__get) går inte att härleda enbart från statisk kod. Verktyget läser deklarerade egenskaper, constructor-promotade parametrar och explicita tilldelningar. Om ett fält bara finns via __get, deklarera det som en egenskap så plockar konverteraren upp det.
Andra verktyg du kan behöva
PHP till XML är bara en bit av pusslet. Dessa verktyg går hand i hand: