2010-08-10 10 views
13

¿Hay alguna manera de verificar si un objeto tiene algún campo? Por ejemplo, tengo un servidor de soap que estoy consultando con un cliente de soap y si llamo a un método get, me devuelven un objeto que contiene campos que definen la consulta soap que he hecho, de lo contrario soy objeto devuelto (stdClass) # 3 (0) {}.Objeto PHP isset y/o vacío

¿Hay alguna manera de saber si el objeto tiene algo?

public function get($id){ 
    try{ 
     $client = new soapclient($this->WSDL,self::getAuthorization()); 
     $result = $client->__soapCall('get', array('get'=> array('sys_id'=>$id))); 
     if(empty($result)){$result = false; } 

    }catch(SoapFault $exception){ 
     //echo $exception;  
     $result = false; 
    } 
    return $result; 
}//end get() 

Este método debe devolver un objeto o falsa y sólo estoy recibiendo un objeto con ningún campo o un objeto de campos.

Respuesta

20

Actualizado para reflejar el comportamiento actual, 5/30/12

vacía() solía trabajar para esto, pero el comportamiento de vacío() ha cambiado varias veces. Como siempre, los documentos php son siempre la mejor fuente para el comportamiento exacto y los comentarios en esas páginas suelen proporcionar una buena historia de los cambios a lo largo del tiempo. Si desea comprobar si hay una falta de propiedades de objeto, un método muy a la defensiva en este momento es:

if (is_object($theObject) && (count(get_object_vars($theObject)) > 0)) { 
    ... 
+0

Eso hace el truco. – Chris

+0

Para mí, esto da un error: "Error fatal de PHP: no se puede usar el valor de retorno de la función en el contexto de escritura". AFAIK, empty() no se puede usar en el valor de retorno de una función, solo en variables. ¿Me estoy perdiendo de algo? –

+1

@MW - Solo hace un par de años. Esta respuesta sufrió polvo de StackOverflow, donde las respuestas sobre la tecnología pueden perder validez con el tiempo. Lo actualicé para ser más relevante, ¡gracias por el comentario! –

-3

Uno de usuario código contribuyeron en el php página vacía() que creo que las direcciones de su problema de comprobar si la matriz está llena pero tiene valores vacíos.

http://www.php.net/manual/en/function.empty.php#97772 Para saber si una matriz tiene nada pero vacío (cadena) valores:

<?php 
$foo = array('foo'=>'', 'bar'=>''); 
$bar = implode('', $foo); 

if (empty($bar)) { 
    echo "EMPTY!"; 
} else { 
    echo "NOT EMPTY!"; 
} 
?> 
Cuestiones relacionadas