13

有没有办法检查一个对象是否有任何字段?例如,我有一个使用soap客户端查询的soap服务器,如果我调用get方法,我要么返回一个对象,其中包含定义我所做的soap查询的字段,否则我将返回object(stdClass)#3 (0 ) { }。

有没有办法判断对象是否有任何东西?

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

此方法应该返回一个对象或 false,我只接收一个没有字段的对象或一个有字段的对象。

4

2 回答 2

22

更新以反映当前行为,2012 年 5 月 30 日

empty() 曾经为此工作,但 empty() 的行为已经改变了好几次。与往常一样,php 文档始终是准确行为的最佳来源,并且这些页面上的评论通常提供了随时间变化的良好历史记录。如果要检查是否缺少对象属性,目前一个非常防御的方法是:

if (is_object($theObject) && (count(get_object_vars($theObject)) > 0)) {
    ...
于 2010-08-10T14:51:46.677 回答
-3

其中一位用户在 php empty() 页面上贡献了代码,我认为它解决了您检查数组是否已填充但具有空值的问题。

http://www.php.net/manual/en/function.empty.php#97772 要查找数组是否只有空(字符串)值:

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

if (empty($bar)) { 
    echo "EMPTY!"; 
} else { 
    echo "NOT EMPTY!"; 
} 
?>
于 2010-08-10T14:54:09.337 回答