{"id":231297,"date":"2022-12-12T14:29:00","date_gmt":"2022-12-12T11:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231297"},"modified":"2022-12-07T11:14:07","modified_gmt":"2022-12-07T08:14:07","slug":"recupero-delle-proprieta-con-spazio-dei-nomi-in-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/recupero-delle-proprieta-con-spazio-dei-nomi-in-php\/","title":{"rendered":"Recupero delle propriet\u00e0 con spazio dei nomi in PHP"},"content":{"rendered":"\n<p>Quando scrivi abbastanza codice per comunicare con API di terze parti, molto probabilmente ti ritroverai a comunicare con un&#8217;API basata su XML.<\/p>\n<p>E di&#8217; quello che vuoi al riguardo: ad alcuni piace, ad altri no. Ma esistono e ad un certo punto saranno quindi una parte necessaria del tuo sviluppo.<\/p>\n<p>Se l&#8217;API \u00e8 ben progettata, probabilmente utilizzer\u00e0 spazi dei nomi per diversi tipi di richieste e risposte. E quando scrivi il client per detta API, probabilmente dovrai recuperare le propriet\u00e0 con spazio dei nomi.<\/p>\n<p>\u00c8 facile farlo, ma non \u00e8 immediatamente ovvio. Quindi, in questo post, esporr\u00f2 un esempio di come fare proprio questo.<\/p>\n<p>Per questo esempio, si supponga di effettuare una chiamata a un&#8217;API basata su XML. Per farlo, sto usando la <strong><a href=\"https:\/\/github.com\/spatie\/array-to-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">libreria Array-To-XML di Spatie<\/a><\/strong> (che \u00e8 estremamente conveniente).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161843-61e72bb95137b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161843-61e72bb95137b.png\" alt=\"Recupero delle propriet\u00e0 con spazio dei nomi in PHP\" ><\/a><\/p>\n<p>Per impostare la richiesta, la creo usando un array <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8b97e2c98600cc15ea514416ab6e96ae#file-00-request-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">come questo:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/\/ Setup the XML to connect to the API endpoint.\n$namespaceExampleGetIDs = [\n    'Version' =&gt; $this-&gt;version,\n    'ApiKey' =&gt; $this-&gt;getPrivateKey(),\n    'acmePasscode' =&gt; $this-&gt;getPasscode(),\n    'Call' =&gt; [\n        '_attributes' =&gt; ['Method' =&gt; 'Namesepace.Example.GetIDs'],\n        'Date' =&gt; $this-&gt;getTimestamp(),\n    ],\n];\n$xml = ArrayToXml::convert($namespaceExampleGetIDs, 'Acme', false);\n<\/code><\/pre>\n<p>Quindi user\u00f2 il client API (che \u00e8 stato astratto per mantenere questo post il pi\u00f9 conciso possibile) per effettuare la richiesta dall&#8217;API. Da l\u00ec, possiamo prendere il contenuto della risposta e fare tutto il lavoro necessario (in questo caso iterer\u00e0 attraverso le propriet\u00e0 della risposta).<\/p>\n<p>Ed \u00e8 qui che entra in gioco il recupero delle propriet\u00e0 degli spazi dei nomi. Supponendo che dobbiamo accedere a una singola propriet\u00e0, o a una propriet\u00e0 di una propriet\u00e0, ecco come farlo <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8b97e2c98600cc15ea514416ab6e96ae#file-01-response-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ogni volta che \u00e8 in uno spazio dei nomi:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/\/ Now make a request to the server.\n$response = $this-&gt;makePostRequest($xml);\n$xmlResponse = new SimpleXMLElement($response-&gt;getBody()-&gt;getContents());\n\n\/\/ Iterate through all of the event IDs to get the information about them.\n$events = [];\nforeach ($xmlResponse-&gt;{'Namesepace.Example.GetIDs'}-&gt;EventID as $eventId) {\n    \/\/ Work with the $eventId however necessary...\n}\n<\/code><\/pre>\n<p>In breve, le parentesi servono come &quot; <strong><a href=\"https:\/\/php.net\/manual\/en\/language.variables.variable.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">variabili<\/a><\/strong> &quot; e ci danno accesso alla natura dinamica di un oggetto.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161843-61e72bbe3fdf1.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161843-61e72bbe3fdf1.png\" alt=\"Recupero delle propriet\u00e0 con spazio dei nomi in PHP\" ><\/a><\/p>\n<p>Dal manuale:<\/p>\n<blockquote>\n<p>A volte \u00e8 conveniente poter avere nomi di variabili variabili. Cio\u00e8, un nome di variabile che pu\u00f2 essere impostato e utilizzato dinamicamente.<\/p>\n<\/blockquote>\n<p>E poich\u00e9 \u00e8 utile impostarli in modo dinamico, \u00e8 naturalmente utile recuperarli in modo dinamico.<\/p>\n<p>Quindi, la prossima volta che lavorerai con un&#8217;API basata su XML (o forse con qualsiasi API), nota che puoi impostare il recupero delle propriet\u00e0 dello spazio dei nomi dell&#8217;oggetto tramite variabili variabili.<\/p>\n<p>Ha senso, vero?<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando si scrive un client per un&#8217;API, potrebbe essere necessario recuperare le propriet\u00e0 con spazio dei nomi.<\/p>\n","protected":false},"author":1,"featured_media":236089,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,804,720],"tags":[1168],"class_list":["post-231297","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-php-6","category-sviluppatore","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231297"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231297\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236089"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}