{"id":230430,"date":"2022-12-12T14:06:00","date_gmt":"2022-12-12T11:06:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230430"},"modified":"2022-12-07T11:14:09","modified_gmt":"2022-12-07T08:14:09","slug":"pobieranie-wlasciwosci-przestrzeni-nazw-w-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/pobieranie-wlasciwosci-przestrzeni-nazw-w-php\/","title":{"rendered":"Pobieranie w\u0142a\u015bciwo\u015bci przestrzeni nazw w PHP"},"content":{"rendered":"\n<p>Gdy napiszesz wystarczaj\u0105c\u0105 ilo\u015b\u0107 kodu, kt\u00f3ry komunikuje si\u0119 z interfejsami API innych firm, najprawdopodobniej komunikujesz si\u0119 za pomoc\u0105 interfejsu API opartego na XML.<\/p>\n<p>I powiedz, co chcesz: niekt\u00f3rym si\u0119 to podoba, innym nie. Ale one istniej\u0105 i dlatego w pewnym momencie b\u0119d\u0105 niezb\u0119dn\u0105 cz\u0119\u015bci\u0105 twojego rozwoju.<\/p>\n<p>Je\u015bli interfejs API jest dobrze zaprojektowany, prawdopodobnie u\u017cyje przestrzeni nazw dla r\u00f3\u017cnych typ\u00f3w \u017c\u0105da\u0144 i odpowiedzi. A kiedy piszesz klienta dla wspomnianego API, prawdopodobnie b\u0119dziesz musia\u0142 pobra\u0107 w\u0142a\u015bciwo\u015bci przestrzeni nazw.<\/p>\n<p>\u0141atwo to zrobi\u0107, ale nie jest to od razu oczywiste. W tym po\u015bcie przedstawi\u0119 przyk\u0142ad, jak to zrobi\u0107.<\/p>\n<p>W tym przyk\u0142adzie za\u0142\u00f3\u017cmy, \u017ce wykonuj\u0119 wywo\u0142anie interfejsu API opartego na j\u0119zyku XML. W tym celu korzystam z <strong><a href=\"https:\/\/github.com\/spatie\/array-to-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">biblioteki Array-To-XML firmy Spatie<\/a><\/strong> (co jest niezwykle wygodne).<\/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=\"Pobieranie w\u0142a\u015bciwo\u015bci przestrzeni nazw w PHP\" ><\/a><\/p>\n<p>Aby skonfigurowa\u0107 \u017c\u0105danie, tworz\u0119 je za pomoc\u0105 tablicy w <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8b97e2c98600cc15ea514416ab6e96ae#file-00-request-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nast\u0119puj\u0105cy spos\u00f3b:<\/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>Nast\u0119pnie u\u017cyj\u0119 klienta API (kt\u00f3ry zosta\u0142 streszczony, aby ten post by\u0142 jak najbardziej zwi\u0119z\u0142y), aby wykona\u0107 \u017c\u0105danie z API. Stamt\u0105d mo\u017cemy pobra\u0107 zawarto\u015b\u0107 odpowiedzi i wykona\u0107 ka\u017cd\u0105 niezb\u0119dn\u0105 prac\u0119 (w tym przypadku b\u0119dzie to iteracja przez w\u0142a\u015bciwo\u015bci odpowiedzi).<\/p>\n<p>I tutaj w gr\u0119 wchodzi pobieranie w\u0142a\u015bciwo\u015bci przestrzeni nazw. Zak\u0142adaj\u0105c, \u017ce potrzebujemy uzyska\u0107 dost\u0119p do pojedynczej w\u0142a\u015bciwo\u015bci lub w\u0142a\u015bciwo\u015bci w\u0142a\u015bciwo\u015bci, oto jak to zrobi\u0107, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8b97e2c98600cc15ea514416ab6e96ae#file-01-response-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">gdy jest to przestrze\u0144 nazw:<\/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>Kr\u00f3tko m\u00f3wi\u0105c, nawiasy klamrowe s\u0142u\u017c\u0105 jako \u201e <strong><a href=\"https:\/\/php.net\/manual\/en\/language.variables.variable.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">zmienne zmienne<\/a><\/strong> &quot; i daj\u0105 nam dost\u0119p do dynamicznej natury obiektu.<\/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=\"Pobieranie w\u0142a\u015bciwo\u015bci przestrzeni nazw w PHP\" ><\/a><\/p>\n<p>Z instrukcji:<\/p>\n<blockquote>\n<p>Czasami wygodnie jest mie\u0107 mo\u017cliwo\u015b\u0107 posiadania zmiennych nazw zmiennych. To znaczy nazwa zmiennej, kt\u00f3ra mo\u017ce by\u0107 ustawiana i u\u017cywana dynamicznie.<\/p>\n<\/blockquote>\n<p>A poniewa\u017c pomocne jest ich dynamiczne ustawianie, naturalnie pomocne jest ich dynamiczne pobieranie.<\/p>\n<p>Wi\u0119c nast\u0119pnym razem, gdy b\u0119dziesz pracowa\u0107 z API opartym na XML (lub by\u0107 mo\u017ce dowolnym API), zwr\u00f3\u0107 uwag\u0119, \u017ce mo\u017cesz pobra\u0107 w\u0142a\u015bciwo\u015bci obiektu z przestrzeni\u0105 nazw za pomoc\u0105 zmiennych zmiennych.<\/p>\n<p>To ma sens, prawda?<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Podczas pisania klienta dla interfejsu API mo\u017ce by\u0107 konieczne pobieranie w\u0142a\u015bciwo\u015bci w przestrzeni nazw.<\/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":[721,897,805],"tags":[1169],"class_list":["post-230430","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-php-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=230430"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230430\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/236089"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=230430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=230430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=230430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}