Отримання властивостей простору імен у PHP
Коли ви напишете достатньо коду, який взаємодіє зі сторонніми API, швидше за все, ви виявите, що спілкуєтеся з API на основі XML.
І кажіть про це що завгодно: комусь подобається, комусь ні. Але вони існують, і тому колись вони стануть необхідною частиною вашого розвитку.
Якщо API добре розроблений, він, швидше за все, використовуватиме простори імен для різних типів запитів і відповідей. І коли ви пишете клієнт для згаданого API, вам, ймовірно, доведеться зайнятися отриманням властивостей простору імен.
Зробити це легко, але це не відразу видно. Тож у цій публікації я розповім приклад того, як це зробити.
Для цього прикладу припустимо, що я роблю виклик API на основі XML. Для цього я використовую бібліотеку Array-To-XML від Spatie (це надзвичайно зручно).
Щоб налаштувати запит, я створюю його за допомогою такого масиву :
<?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);
Потім я використаю клієнт API (який був абстрагований, щоб зберегти цю публікацію якомога стислою), щоб зробити запит з API. Звідти ми можемо взяти вміст відповіді та виконати будь-яку необхідну роботу (у цьому випадку це буде ітерація властивостей відповіді).
І саме тут вступає в дію отримання властивостей просторів імен. Якщо припустити, що нам потрібно отримати доступ до однієї властивості або властивості властивості, ось як це зробити, коли це простір імен:
<?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...
}
Коротше кажучи, фігурні дужки служать «змінними змінними» і дають нам доступ до динамічної природи об’єкта.
З посібника:
Іноді зручно мати змінні імена змінних. Тобто ім’я змінної, яке можна встановлювати та використовувати динамічно.
І оскільки корисно встановлювати їх динамічно, природно, корисно їх динамічно отримувати.
Отже, наступного разу, коли ви працюватимете з API на основі XML (або, можливо, будь-яким API), зауважте, що ви можете налаштувати отримання властивостей простору імен об’єкта через змінні змінні.
Це має сенс, правда?

