2010-08-10 6 views
13

Existe-t-il un moyen de vérifier si un objet a des champs? Par exemple, j'ai un serveur de savon que j'interroge en utilisant un client de savon et si j'appelle une méthode de get, je suis retourné un objet contenant des champs définissant la question de savon que j'ai faite autrement je suis retourné objet (stdClass) # 3) {}.Objet PHP isset et/ou vide

Y at-il un moyen de dire si l'objet a quelque chose?

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() 

Cette méthode doit renvoyer un objet ou faux et je ne reçois un objet sans champ ou un objet avec des champs.

Répondre

20

Mise à jour pour refléter le comportement actuel, 5/30/12

vide() utilisé pour travailler pour cela, mais le comportement de vide() a changé plusieurs fois. Comme toujours, les documents php sont toujours la meilleure source pour un comportement exact et les commentaires sur ces pages fournissent généralement un bon historique des changements au fil du temps. Si vous voulez vérifier un manque de propriétés d'objet, une méthode très défensive au moment est:

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

qui fait l'affaire. – Chris

+0

Pour moi, cela donne une erreur: "Erreur fatale PHP: Impossible d'utiliser la valeur de retour de la fonction dans le contexte d'écriture". AFAIK, empty() ne peut pas être utilisé sur la valeur de retour d'une fonction, uniquement sur les variables. Est-ce que je manque quelque chose? –

+1

@MW - Seulement quelques années. Cette réponse a souffert de la poussière StackOverflow, où les réponses sur la technologie peuvent devenir invalides au fil du temps. Je l'ai mis à jour pour être plus pertinent, merci pour le commentaire! –

-3

Un des utilisateurs est un code sur la php la page vide() que je pense que les adresses de votre problème de vérifier si le tableau est rempli mais a des valeurs vides.

http://www.php.net/manual/en/function.empty.php#97772 Pour trouver si un tableau n'a rien mais vide (string) valeurs:

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

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