Я пытаюсь получить значения из веб-службы.
Ответ формируется как ..
<campaign Id="200"> <name> test </name> </campaign>
PHP-код
SoapClient( "WSDL"); $return = $client->GetCampaigns('Username', 'Password' );
Но когда я пытаюсь получить доступ к возврату, я получаю только stdClass с атрибутом name.
public 'Campaign' => array 0 => object(stdClass)[46] public 'Name' => string 'chris test' (length=10)
Я нахожу, что я должен предоставить «classmap» для 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.