{"id":231110,"date":"2022-12-12T14:56:00","date_gmt":"2022-12-12T11:56:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231110"},"modified":"2022-12-07T11:14:05","modified_gmt":"2022-12-07T08:14:05","slug":"nimiavaruusominaisuuksien-haku-php-ssae","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/nimiavaruusominaisuuksien-haku-php-ssae\/","title":{"rendered":"Nimiavaruusominaisuuksien haku PHP:ss\u00e4"},"content":{"rendered":"\n<p>Kun kirjoitat tarpeeksi koodia, joka kommunikoi kolmannen osapuolen sovellusliittymien kanssa, huomaat enemm\u00e4n kuin todenn\u00e4k\u00f6isesti kommunikoivasi XML-pohjaisen API:n kanssa.<\/p>\n<p>Ja sano siit\u00e4 mit\u00e4 haluat: Jotkut pit\u00e4v\u00e4t siit\u00e4, jotkut eiv\u00e4t. Mutta ne ovat olemassa, ja ne ovat siten v\u00e4ltt\u00e4m\u00e4t\u00f6n osa kehityst\u00e4si jossain vaiheessa.<\/p>\n<p>Jos API on hyvin suunniteltu, se todenn\u00e4k\u00f6isesti k\u00e4ytt\u00e4\u00e4 nimiavaruuksia erityyppisille pyynn\u00f6ille ja vastauksille. Ja kun kirjoitat asiakasohjelmaa mainitulle API:lle, joudut todenn\u00e4k\u00f6isesti hakemaan nimiavaruusominaisuuksia.<\/p>\n<p>Se on helppo tehd\u00e4, mutta se ei ole heti selv\u00e4\u00e4. Joten t\u00e4ss\u00e4 viestiss\u00e4 aion k\u00e4yd\u00e4 l\u00e4pi esimerkin siit\u00e4, miten se tehd\u00e4\u00e4n.<\/p>\n<p>T\u00e4ss\u00e4 esimerkiss\u00e4 oletetaan, ett\u00e4 soitan XML-pohjaiselle API:lle. K\u00e4yt\u00e4n <strong><a href=\"https:\/\/github.com\/spatie\/array-to-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4h\u00e4n Spatien Array-To-XML-kirjastoa<\/a><\/strong> (mik\u00e4 on eritt\u00e4in k\u00e4tev\u00e4\u00e4).<\/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=\"Nimiavaruusominaisuuksien haku PHP:ss\u00e4\" ><\/a><\/p>\n<p>Pyynn\u00f6n m\u00e4\u00e4ritt\u00e4mist\u00e4 varten luon sen seuraavanlaisen taulukon avulla <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8b97e2c98600cc15ea514416ab6e96ae#file-00-request-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">:<\/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>Sitten k\u00e4yt\u00e4n API-asiakasohjelmaa (josta on tiivistetty, jotta t\u00e4m\u00e4 viesti olisi mahdollisimman ytimek\u00e4s) pyynn\u00f6n tekemiseen API:lta. Sielt\u00e4 voimme ottaa vastauksen sis\u00e4ll\u00f6n ja tehd\u00e4 kaiken tarpeellisen ty\u00f6n (t\u00e4ss\u00e4 tapauksessa se iteroidaan vastauksen ominaisuuksien kautta).<\/p>\n<p>Ja t\u00e4ss\u00e4 nimiavaruuksien ominaisuuksien noutaminen tulee esiin. Olettaen, ett\u00e4 meid\u00e4n on k\u00e4ytett\u00e4v\u00e4 yht\u00e4 omaisuutta tai ominaisuuden ominaisuutta, tee se <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8b97e2c98600cc15ea514416ab6e96ae#file-01-response-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">seuraavasti aina, kun se on nimiavaruudeltaan:<\/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>Lyhyesti sanottuna aaltosulut toimivat &quot; <strong><a href=\"https:\/\/php.net\/manual\/en\/language.variables.variable.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">muuttujamuuttujina<\/a><\/strong> &quot; ja antavat meille p\u00e4\u00e4syn objektin dynaamiseen luonteeseen.<\/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=\"Nimiavaruusominaisuuksien haku PHP:ss\u00e4\" ><\/a><\/p>\n<p>K\u00e4sikirjasta:<\/p>\n<blockquote>\n<p>Joskus on k\u00e4tev\u00e4\u00e4 pysty\u00e4 k\u00e4ytt\u00e4m\u00e4\u00e4n muuttujien nimi\u00e4. Eli muuttujan nimi, joka voidaan asettaa ja k\u00e4ytt\u00e4\u00e4 dynaamisesti.<\/p>\n<\/blockquote>\n<p>Ja koska on hy\u00f6dyllist\u00e4 asettaa ne dynaamisesti, on luonnollisesti hy\u00f6dyllist\u00e4 noutaa ne dynaamisesti.<\/p>\n<p>Joten kun seuraavan kerran ty\u00f6skentelet XML-pohjaisen API:n (tai kenties mink\u00e4 tahansa API:n) kanssa, huomaa, ett\u00e4 voit hakea objektin nimiavaruuksia muuttuvien muuttujien avulla.<\/p>\n<p>Siin\u00e4 on j\u00e4rke\u00e4, eik\u00f6?<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kun kirjoitat asiakassovellusta API:lle, saatat joutua hakemaan nimiavaruusominaisuuksia.<\/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":[719,895,803],"tags":[1166],"class_list":["post-231110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-php-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=231110"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231110\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/236089"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}