PHP SoapClient — возврат значений атрибутов в ответе

Я пытаюсь получить значения из веб-сервиса.

Ответ оформляется как..

<campaign Id="200"> <name> test </name> </campaign>

PHP-код

SoapClient( "WSDL");

$return = $client->GetCampaigns('Username', 'Password' );

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

  public 'Campaign' => 
array
  0 => 
    object(stdClass)[46]
      public 'Name' => string 'chris test' (length=10)

person Jon Busby    schedule 18.10.2010    source источник
comment
php.net/manual/en/soapclient.getlastresponse.php будет эта помощь   -  person zod    schedule 18.10.2010
comment
Это полный вывод оператора var_dump($return)?   -  person thetaiko    schedule 18.10.2010
comment
Прошел год... Есть какие-нибудь обновления в вашем поиске, чтобы исправить ответ веб-службы? :П   -  person Robert Martin    schedule 31.10.2011


Ответы (1)


Я обнаружил, что мне нужно предоставить «карту классов» для SoapClient, чтобы заставить его отображать объекты в ответе на классы, определенные в PHP. В WSDL имя типа обычно пишется в нижнем верблюжьем регистре (начиная со нижнего и верблюжьего регистра).

class MY_Campaign {
    private $name;
    function getName () { return $this->name; }
}

$options = array(
        'classmap' => array(
                'campaign' => 'MY_Campaign',
            );
    );
$client = new SoapClient('http://example.com/yourservice?wsdl', $options);
$return = $client->GetCampaigns ();

Я мог бы дать лучший ответ, если бы у меня был WSDL. Карта классов зависит от определений типов в файле WSDL.

person HNygard    schedule 10.11.2011