Hoje tive um desafio. Precisava trabalhar com um conteúdo XML obtido à partir de um Web Service. O problema era que o conteúdo XML estava dentro de um objeto stdClass. Veja o que eu obtinha com um var_dump:
object(stdClass)#2 (1) {
["ConsultarProdutosResult"]=>
object(stdClass)#3 (1) {
["any"]=>
string(1458324) "10001POLTRONA"
}
}
Sim, um objeto dentro de outro objeto. Por algum motivo não consegui trabalhar com o método do mesmo. Embora o comando var_export me informasse que o método do objeto se chamava __set_state, ao utiliza-lo, aparecia um erro dizendo que o método era indefinido. O que eu fiz? Forcei os 2 objetos para array e obtive sucesso:
try {
$opt = array('encoding' => 'utf8');
$cliente = new SoapClient('http://exemplo.com.br/wsExemplo.asmx?wsdl', $opt);
$produtos = $cliente->ConsultaProdutos();
$produtos = (array) $produtos;
$produtos = (array) $produtos['ConsultaProdutosResult'];
$produtos = $produtos['any'];
echo $produtos;
} catch (SoapFault $e) {
echo $e->getMessage();
}
Cara, você salvou o meu dia , muiot obrigado pelo exemplo , para mim funcionou perfeitamente.
Obrigado , por ter compoartilhado , o meu exemplo foi este e deu certo :
$pedido = $client->PedidoGrava($parametros);
$pedido = (array)$pedido;
$pedido = (array)$pedido[‘PedidoGravaResult’];
$pedido = $pedido[‘string’];
echo $pedido;