Kui kirjutate piisavalt koodi, mis suhtleb kolmanda osapoole API-dega, avastate enam kui tõenäolisemalt, et suhtlete XML-põhise API-ga.
Ja öelge selle kohta, mida soovite: mõnele meeldib, mõnele mitte. Kuid need on olemas ja seega on nad mingil hetkel teie arengu vajalik osa.
Kui API on hästi läbimõeldud, kasutab see tõenäoliselt erinevat tüüpi päringute ja vastuste jaoks nimeruume. Ja kui kirjutate nimetatud API jaoks klienti, peate tõenäoliselt otsima nimeruumi atribuute.
Seda on lihtne teha, kuid see pole kohe ilmne. Nii et selles postituses toon läbi näite, kuidas just seda teha.
Selle näite puhul oletame, et ma helistan XML-põhisele API-le. Selleks kasutan Spatie Array-To-XML teeki (mis on äärmiselt mugav).
Taotluse seadistamiseks loon selle sellise massiivi abil :
<?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);
Seejärel kasutan API-lt päringu tegemiseks API klienti (mis on kokku võetud, et see postitus oleks võimalikult lühike). Sealt saame võtta vastuse sisu ja teha mis tahes vajalikku tööd (sel juhul kordab see vastuse atribuutide kaudu).
Ja siin tulebki mängu nimeruumide atribuutide toomine. Eeldades, et meil on vaja juurde pääseda ühele atribuudile või atribuudi atribuudile, toimige järgmiselt, kui see on nimeruumis:
<?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...
}
Lühidalt öeldes toimivad sulgud " muutuvate muutujatena " ja annavad meile juurdepääsu objekti dünaamilisele olemusele.
Kasutusjuhendist:
Mõnikord on mugav muutujate nimede olemasolu. See on muutuja nimi, mida saab dünaamiliselt määrata ja kasutada.
Ja kuna nende dünaamiline seadistamine on kasulik, on loomulikult kasulik neid dünaamiliselt hankida.
Nii et järgmine kord, kui töötate XML-põhise API-ga (või võib-olla mis tahes API-ga), pange tähele, et saate määrata objekti nimeruumi omaduste hankimise muutujate kaudu.
See on loogiline, eks?

