Convertitore PHP in XML
Incolla classi o oggetti PHP. Ottieni XML pulito.
Cosa fa questo strumento
Se ti è mai toccato mettere insieme a mano un payload XML per una chiamata PHP SoapClient, un export da un plugin WordPress o una vecchia integrazione partner che parla ancora XML, sai quanto sia un lavoro ingrato. Incolla qui il PHP e ricevi XML ben formato in un solo passaggio. Una classe con promozione del costruttore, un intero file di value object o un'istanza popolata — stesso risultato: un documento XML completo con ogni proprietà preservata.
Non è una sostituzione cieca di stringhe. Il convertitore legge correttamente il PHP 8+ moderno: le proprietà promosse dal costruttore si comportano come quelle dichiarate, i campi readonly escono come elementi normali, le proprietà tipizzate (string, int, float, bool) mantengono i loro tipi, i valori DateTimeInterface vengono resi come stringhe ISO-8601, null diventa un elemento vuoto (non scartato), e gli array diventano elementi contenitore con un figlio per voce — come tipicamente farebbero SimpleXMLElement o DOMDocument.
La struttura della classe e i metadati vengono rispettati. Ogni classe di primo livello diventa un elemento radice col nome della classe, le proprietà pubbliche diventano elementi figli nell'ordine di dichiarazione, i value object annidati vengono espansi inline, e le proprietà array diventano elementi wrapper. Attributi PHP come #[XmlRoot("x")] o tag di docblock come @XmlElement("x") rinominano gli elementi dove lo specifichi. Incolla un model Eloquent di Laravel, un DTO di Symfony Serializer o un semplice value object — l'XML esce come lo scriverebbe un SoapVar fatto a mano o un corpo di richiesta SOAP.
Come usarlo
Tre passaggi. Stesso flusso sia che incolli una classe sia l'intera cartella <code>src/Entity</code>.
Incolla il tuo PHP (o prova l'esempio)
Butta il tuo PHP nell'editor a sinistra così com'è. Una classe con promozione del costruttore, un value object readonly, più classi o un'istanza popolata — va tutto bene. Clicca Carica esempio per vedere prima un caso realistico con Order.
Non serve togliere il tag <?php, togliere i namespace o cancellare i docblock. Lascia il codice com'è nel tuo IDE. Basta incollarlo.
Premi Converti
Clicca il pulsante verde Converti. Lo strumento legge il PHP, tiene ogni classe e proprietà, e costruisce l'XML in un unico passaggio. Un breve luccichio indica che sta lavorando.
Copia l'XML
Il pannello destro si riempie di XML indentato e ben formato, che qualunque parser conforme allo standard accetta. Mettilo in una richiesta SoapClient, in una fixture PHPUnit, in un file di export WordPress o in un esempio della documentazione dell'API.
Quando serve davvero
Creare fixture per richieste SoapClient
Stai parlando con un endpoint SOAP legacy via <code>SoapClient</code> e ti serve un corpo di richiesta che combaci con una classe PHP. Incolla la classe, prendi l'XML, avvolgilo con <code>SoapVar</code> o passalo a <code>__doRequest()</code>.
Export XML di WordPress/Drupal
Una classe di custom post type o un'entità Drupal con 20 campi diventa un template di export WXR/XML pronto da editare — basta con il costruire a mano strutture di elementi per far combaciare la forma PHP.
Risposte XML in Symfony/Laravel
La tua API torna quasi sempre JSON, ma un client vuole ancora XML. Incolla il DTO, prendi la busta XML, mettila in un esempio di Symfony Response o Laravel ResponseFactory e tira dritto.
Fixture PHPUnit e test di snapshot
Trasforma istanze di value object dei tuoi unit test in file di fixture XML per test di integrazione, contract test o server SOAP mockati — senza scrivere a occhio un template XML corrispondente a mano.
Domande comuni
Gestisce promozione del costruttore e proprietà readonly?
Sì. I parametri promossi dal costruttore (public string $orderId dentro __construct) diventano elementi figli esattamente come le proprietà dichiarate. readonly viene trattato come una proprietà normale in fase di serializzazione — l'XML è identico. Anche la readonly class di PHP 8.2 funziona.
Posso incollare più classi insieme?
Sì — incolla un'intera cartella di entità o un singolo file con più classi. Ogni classe di primo livello esce con i tipi annidati espansi e le proprietà della classe padre incluse. I trait vengono trattati come contributori di proprietà. Niente viene scartato in silenzio.
Come vengono gestiti DateTime, null, float e bool?
Le istanze di DateTimeInterface (DateTime, DateTimeImmutable) vengono rese come stringhe ISO-8601. null diventa un elemento vuoto (<field/>) invece di essere omesso, così la forma dell'XML resta coerente. float usa notazione decimale semplice senza separatori specifici di locale, e bool viene serializzato come il testo true/false — proprio come produce SimpleXMLElement.
E gli array e gli oggetti annidati?
Le proprietà array diventano elementi contenitore con un figlio per voce. Un /** @var OrderItem[] */ public array $items diventa <items><OrderItem/><OrderItem/></items>. Gli array associativi usano le chiavi stringa come nomi di elemento. I value object annidati vengono espansi inline — nello stesso modo in cui DOMDocument costruirebbe l'albero.
Il mio codice viene salvato?
Il tuo PHP viene inviato al backend per la conversione e non viene persistito — non logghiamo il payload. Come sempre con gli strumenti online, se il codice contiene literal davvero sensibili (password DB, API key), ripuliscili o mettili in mock prima di incollare.
E se il codice usa metodi magici o proprietà dinamiche?
Le proprietà dinamiche (aggiunte a runtime via __set o casting a stdClass) e i getter magici (__get) non si possono dedurre solo dal codice statico. Lo strumento legge proprietà dichiarate, parametri promossi dal costruttore e assegnazioni esplicite. Se un campo esiste solo via __get, dichiaralo come proprietà così il convertitore lo prende.
Altri strumenti che potrebbero servirti
PHP in XML è solo un pezzo del puzzle. Questi strumenti si sposano bene: