Enviar parámetro complejo. PHP WebServices (API B3)

Siguiendo con la documentación de problemas comunes, vamos a explicar como enviar parámetros de un tipo complejo en un WebServices SOAP desde PHP 5.xx.
Cuando vemos ejemplos de consumo de WebServices en general pasamos tipos primitivos y obtenemos respuestas simples. Otras veces obtenemos un Array de objetos que iteramos y funciona de maravillas.
Que hacemos si nos pide un parámetro complejo ? O sea, por ejemplo, el método “guardarCliente” nos pide como parámetro un objeto del tipo “Cliente”.
El array en este caso no sirve. Debemos pasarle un objeto semejante al que pide el servicio.
PHP 5, como sabemos soporta todas las características de OOP que acostumbramos en otros lenguajes.
En primer lugar podemos ver los tipos que el servicio expone con la función _GetTypes() del objeto SoapClient.
Gracias a esto obtenemos las estructuras de los objetos, algo así como:

struct Cliente {
decimal dNum;
string nombre;
}

Ahora podremos crear en PHP una clase similar al original:

class Cliente {
public $dNum;
public $nombre;
}

Y finalmente instanciamos el objeto, pasamos los valores necesarios y llamamos al método:

$param = new Cliente();
$param->dNum = 122;
$param->nombre=’Marcelo Agustini’

$ClienteWebServices->guardarCliente($param);

Gracias a los WS obtendremos un código OOP limpio, ordenado y totalmente escalable.

Anuncios