Kun kirjoitat tarpeeksi koodia, joka kommunikoi kolmannen osapuolen sovellusliittymien kanssa, huomaat enemmän kuin todennäköisesti kommunikoivasi XML-pohjaisen API:n kanssa.
Ja sano siitä mitä haluat: Jotkut pitävät siitä, jotkut eivät. Mutta ne ovat olemassa, ja ne ovat siten välttämätön osa kehitystäsi jossain vaiheessa.
Jos API on hyvin suunniteltu, se todennäköisesti käyttää nimiavaruuksia erityyppisille pyynnöille ja vastauksille. Ja kun kirjoitat asiakasohjelmaa mainitulle API:lle, joudut todennäköisesti hakemaan nimiavaruusominaisuuksia.
Se on helppo tehdä, mutta se ei ole heti selvää. Joten tässä viestissä aion käydä läpi esimerkin siitä, miten se tehdään.
Tässä esimerkissä oletetaan, että soitan XML-pohjaiselle API:lle. Käytän tähän Spatien Array-To-XML-kirjastoa (mikä on erittäin kätevää).
Pyynnön määrittämistä varten luon sen seuraavanlaisen taulukon avulla :
<?php
// Setup the XML to connect to the API endpoint.
$namespaceExampleGetIDs = [
'Version' => $this->version,
'ApiKey' => $this->getPrivateKey(),
'acmePasscode' => $this->getPasscode(),
'Call' => [
'_attributes' => ['Method' => 'Namesepace.Example.GetIDs'],
'Date' => $this->getTimestamp(),
],
];
$xml = ArrayToXml::convert($namespaceExampleGetIDs, 'Acme', false);
Sitten käytän API-asiakasohjelmaa (josta on tiivistetty, jotta tämä viesti olisi mahdollisimman ytimekäs) pyynnön tekemiseen API:lta. Sieltä voimme ottaa vastauksen sisällön ja tehdä kaiken tarpeellisen työn (tässä tapauksessa se iteroidaan vastauksen ominaisuuksien kautta).
Ja tässä nimiavaruuksien ominaisuuksien noutaminen tulee esiin. Olettaen, että meidän on käytettävä yhtä omaisuutta tai ominaisuuden ominaisuutta, tee se seuraavasti aina, kun se on nimiavaruudeltaan:
<?php
// Now make a request to the server.
$response = $this->makePostRequest($xml);
$xmlResponse = new SimpleXMLElement($response->getBody()->getContents());
// Iterate through all of the event IDs to get the information about them.
$events = [];
foreach ($xmlResponse->{'Namesepace.Example.GetIDs'}->EventID as $eventId) {
// Work with the $eventId however necessary...
}
Lyhyesti sanottuna aaltosulut toimivat " muuttujamuuttujina " ja antavat meille pääsyn objektin dynaamiseen luonteeseen.
Käsikirjasta:
Joskus on kätevää pystyä käyttämään muuttujien nimiä. Eli muuttujan nimi, joka voidaan asettaa ja käyttää dynaamisesti.
Ja koska on hyödyllistä asettaa ne dynaamisesti, on luonnollisesti hyödyllistä noutaa ne dynaamisesti.
Joten kun seuraavan kerran työskentelet XML-pohjaisen API:n (tai kenties minkä tahansa API:n) kanssa, huomaa, että voit hakea objektin nimiavaruuksia muuttuvien muuttujien avulla.
Siinä on järkeä, eikö?

