PHP til XML-konverterer
Lim inn PHP-klasser eller objekter. Få ren XML tilbake.
Hva verktøyet gjør
Har du noen gang måttet sette sammen en XML-payload for hånd til et PHP-kall med SoapClient, en WordPress-plugineksport eller en gammel partnerintegrasjon som fortsatt snakker XML, så vet du hvor slitsomt det er. Lim inn PHP-en her, og du får velformet XML tilbake i én sleng. En klasse med constructor promotion, en hel value object-fil eller en populert instans — samme resultat: et komplett XML-dokument der hver egenskap er bevart.
Dette er ikke blind streng-erstatning. Konvertereren leser moderne PHP 8+ skikkelig: constructor-promoterte egenskaper oppfører seg likt som deklarerte, readonly-felter kommer ut som vanlige elementer, typede egenskaper (string, int, float, bool) beholder typene sine, DateTimeInterface-verdier renderes som ISO-8601-strenger, null blir til et tomt element (i stedet for å bli droppet), og arrays blir til containerelementer med ett barn per post — akkurat som SimpleXMLElement eller DOMDocument vanligvis ville produsert.
Klassestruktur og metadata respekteres. Hver toppnivå-klasse blir til et rotelement oppkalt etter klassen, public-egenskaper blir til barneelementer i deklarasjonsrekkefølge, nøstede value objects foldes ut inline, og array-egenskaper blir til wrapper-elementer. PHP-attributter som #[XmlRoot("x")] eller docblock-tagger som @XmlElement("x") endrer navn på elementer der du spesifiserer det. Lim inn en Eloquent-modell fra Laravel, en DTO fra Symfony Serializer eller et vanlig value object — XML-en kommer ut slik en håndskrevet SoapVar eller en SOAP-request-body ville sett ut.
Slik bruker du det
Tre steg. Samme flyt enten du limer inn én klasse eller hele <code>src/Entity</code>-mappen.
Lim inn PHP-en (eller prøv eksemplet)
Slipp PHP-en inn i venstre editor som den er. En klasse med constructor promotion, et readonly value object, flere klasser eller en populert instans — alt funker. Klikk på Last inn eksempel for først å se et realistisk Order-eksempel.
Du trenger ikke fjerne <?php-taggen, rive bort namespaces eller slette docblocks. La koden stå slik den ser ut i IDE-en din. Bare lim inn.
Trykk Konverter
Klikk på den grønne Konverter-knappen. Verktøyet leser PHP-en, beholder hver klasse og egenskap, og bygger XML-en i én sleng. Et kort glimt vises mens det jobber.
Kopier XML-en
Høyre panel fylles med innrykket, velformet XML som enhver standardkompatibel parser vil godta. Slipp den inn i en SoapClient-request, en PHPUnit-fixture, en WordPress-eksportfil eller et eksempel i API-dokumentasjonen.
Når det faktisk kommer til nytte
Bygge fixtures til SoapClient-requests
Du snakker med et legacy-SOAP-endpoint via <code>SoapClient</code> og trenger en request-body som matcher en PHP-klasse. Lim inn klassen, ta XML-en, pakk den inn med <code>SoapVar</code> eller send den til <code>__doRequest()</code>.
XML-eksporter i WordPress/Drupal
En klasse for en custom post type eller en Drupal-entitet med 20 felter blir til en klar-til-redigering WXR- eller XML-eksportmal — slutt med å sette sammen elementstrukturer for hånd for å matche PHP-formen.
XML-svar i Symfony/Laravel
API-et ditt returnerer stort sett JSON, men én klient vil fortsatt ha XML. Lim inn DTO-en, hent XML-konvolutten, slipp den inn i et eksempel med Symfony Response eller Laravel ResponseFactory, og gå videre.
PHPUnit-fixtures og snapshot-tester
Gjør value-object-instanser fra enhetstestene dine om til XML-fixturefiler til integrasjonstester, kontraktstester eller mockede SOAP-servere — uten å skrive en matchende XML-mal for hånd på øyemål.
Vanlige spørsmål
Håndterer den constructor promotion og readonly-egenskaper?
Ja. Constructor-promoterte parametre (public string $orderId inni __construct) blir til barneelementer akkurat som deklarerte egenskaper. readonly behandles som en vanlig egenskap ved serialisering — XML-en er identisk. PHP 8.2 sin readonly class funker også.
Kan jeg lime inn flere klasser samtidig?
Ja — lim inn en hel entity-mappe eller én enkelt fil med flere klasser. Hver toppnivå-klasse kommer ut med nøstede typer foldet ut og egenskaper fra foreldreklassen tatt med. Traits behandles slik at de bidrar med egenskapene sine. Ingenting forsvinner i stillhet.
Hvordan håndteres DateTime, null, float og bool?
Instanser av DateTimeInterface (DateTime, DateTimeImmutable) renderes som ISO-8601-strenger. null blir til et tomt element (<field/>) i stedet for å droppes, slik at XML-formen holder seg konsistent. float bruker vanlig desimalnotasjon uten locale-spesifikke skilletegn, og bool serialiseres som teksten true/false — nøyaktig det SimpleXMLElement produserer.
Hva med arrays og nøstede objekter?
Array-egenskaper blir til containerelementer med ett barn per post. En /** @var OrderItem[] */ public array $items blir til <items><OrderItem/><OrderItem/></items>. Assosiative arrays bruker streng-nøklene sine som elementnavn. Nøstede value objects foldes ut inline — på samme måte som DOMDocument ville bygd treet.
Lagres koden min?
PHP-en din sendes til backenden for konvertering og lagres ikke — vi logger ikke payloaden. Som alltid med nettverktøy: hvis koden inneholder reelt sensitive literaler (DB-passord, API-nøkler), rens eller mock dem før du limer inn.
Hva om koden bruker magiske metoder eller dynamiske egenskaper?
Dynamiske egenskaper (lagt til i runtime via __set eller casting til stdClass) og magiske gettere (__get) kan ikke utledes fra statisk kode alene. Verktøyet leser deklarerte egenskaper, constructor-promoterte parametre og eksplisitte tilordninger. Hvis et felt bare finnes via __get, deklarer det som en egenskap slik at konvertereren kan plukke det opp.
Andre verktøy du kan få bruk for
PHP til XML er bare én brikke i puslespillet. Disse verktøyene passer fint sammen med det: