Как в mailgun-php получать ответ на запрос в виде JSON а не object?

Рейтинг: 0Ответов: 1Опубликовано: 18.05.2023

Я использую этот SDK mailgun-php

Делаю такой запрос

$mailgun = Mailgun::create($private_api_key, 'https://api.mailgun.net', $client);
$result = $mailgun->domains()->index();

В ответ получаю объект:

object(Mailgun\Model\Domain\IndexResponse)#35 (2) {
  ["totalCount":"Mailgun\Model\Domain\IndexResponse":private]=>
  int(1)
  ["items":"Mailgun\Model\Domain\IndexResponse":private]=>
  array(1) {
    [0]=>
    object(Mailgun\Model\Domain\Domain)#37 (7) {
      ["createdAt":"Mailgun\Model\Domain\Domain":private]=>
      object(DateTimeImmutable)#53 (3) {
        ["date"]=>
        string(26) "2022-05-17 08:17:00.000000"
        ["timezone_type"]=>
        int(2)
        ["timezone"]=>
        string(3) "GMT"
      }
      ["smtpLogin":"Mailgun\Model\Domain\Domain":private]=>
      string(62) "domain@sandbox8wefwe8f1wef4.mailgun.org"
      ["name":"Mailgun\Model\Domain\Domain":private]=>
      string(51) "sandbox8wefwe8f1wef4.mailgun.org"
      ["smtpPassword":"Mailgun\Model\Domain\Domain":private]=>
      NULL
      ["wildcard":"Mailgun\Model\Domain\Domain":private]=>
      bool(false)
      ["spamAction":"Mailgun\Model\Domain\Domain":private]=>
      string(8) "disabled"
      ["state":"Mailgun\Model\Domain\Domain":private]=>
      string(6) "active"
    }
  }
}

А как преобразовать это в json?

Пробовал так

$json = json_encode($result);

но тогда $json пуста {}

Ответы

▲ 0

Результатом вызова API по умолчанию является объект домена. Если вы предпочитаете работать с массивом, а не с объектом, вы можете внедрить его ArrayHydrator в класс Mailgun.

use Mailgun\Hydrator\ArrayHydrator;

$configurator = new HttpClientConfigurator();
$configurator->setApiKey('key-example');

$mg = new Mailgun($configurator, new ArrayHydrator());
$data = $mg->domains()->show('example.com');

foreach ($data['receiving_dns_records'] as $record) {
  echo isset($record['record_type']) ? $record['record_type'] : null;
}

А далее на массив уже можете применить json_decode()