martes, 3 de noviembre de 2015

Warning al Crear un WebService con NuSoap en PHP

Al crear un webservice para que responda a peticiones de un cliente utilizando la librería nusoap, se genera un Warning en el log de errores del Apache como se puede observar en la siguiente línea.

[Mon Nov 02 12:10:39 2015] [error] [client 192.168.xxx.xxx] PHP Warning:  get_class() expects parameter 1 to be object, string given in /xxx/xxx/nusoap/lib/nusoap.php on line 4022

Este Warning es generado en el archivo nusoap.php ubicado en ./nusoap/lib/nusoap.php y se puede solucionar remplazando la línea 4022 que originalmente esta escrita como se puede observar en la siguiente línea.

if (isset($this->methodreturn) && ((get_class($this->methodreturn) == 'soap_fault') || (get_class($this->methodreturn) == 'nusoap_fault'))) {

Por una línea que fuerce la variable $this-methodreturn a un objeto, de manera que se pueda utilizar la función get_class() sin problemas, obteniendo como resultado la siguiente línea.

if (isset($this->methodreturn) && ((get_class((object)$this->methodreturn) == 'soap_fault') || (get_class((object)$this->methodreturn) == 'nusoap_fault'))) {


La función get_class() de PHP debe recibir como parámetro un object y la variable $this->methodreturn no podemos asegurar que sea un object, por lo tanto, se debe forzar la variable para convertirla en el tipo de variable.

Referencia:
http://forums.devshed.com/php-development-5/nusoap-simple-example-681714.html

http://php.net/manual/es/function.get-class.php

"Gracias, por compartir tus conocimientos"

1 comentario: