✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Получение свойств пространства имен в PHP

40

Когда вы напишете достаточно кода, взаимодействующего со сторонними API, вы, скорее всего, обнаружите, что общаетесь с API на основе XML.

И говорите об этом что хотите: кому-то нравится, кому-то нет. Но они существуют, и, таким образом, в какой-то момент они станут необходимой частью вашего развития.

Если API хорошо спроектирован, он, скорее всего, будет использовать пространства имен для различных типов запросов и ответов. И когда вы пишете клиент для указанного API, вам, вероятно, потребуется получить свойства пространства имен.

Это легко сделать, но это не сразу очевидно. Итак, в этом посте я собираюсь рассмотреть пример того, как это сделать.

В этом примере предположим, что я вызываю API на основе XML. Для этого я использую библиотеку Array-To-XML от Spatie (очень удобно).

Получение свойств пространства имен в PHP

Чтобы настроить запрос, я создаю его, используя такой массив :

<?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...
}

Короче говоря, фигурные скобки служат «переменными переменными» и дают нам доступ к динамической природе объекта.

Получение свойств пространства имен в PHP

Из руководства:

Иногда удобно иметь переменные имена переменных. То есть имя переменной, которое можно задать и использовать динамически.

И поскольку полезно устанавливать их динамически, естественно, полезно и извлекать их динамически.

Так что в следующий раз, когда вы будете работать с API на основе XML (или, возможно, с любым API), обратите внимание, что вы можете настроить получение свойств объекта в пространстве имен через переменные-переменные.

Это имеет смысл, верно?

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее