代码之家  ›  专栏  ›  技术社区  ›  Chris

php对象为set和/或空

  •  13
  • Chris  · 技术社区  · 14 年前

    是否有方法检查对象是否有字段?例如,我有一个使用SOAP客户机进行查询的SOAP服务器,如果调用get方法,则会返回一个包含定义所做SOAP查询的字段的对象,否则会返回对象(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,并且我只接收一个没有字段的对象或一个带有字段的对象。

    2 回复  |  直到 12 年前
        1
  •  22
  •   Kevin Vaughan    12 年前

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

    empty()用于此目的,但empty()的行为已多次更改。和往常一样,php文档始终是准确行为的最佳来源,并且这些页面上的注释通常提供了一段时间内变化的良好历史记录。如果您想检查是否缺少对象属性,目前一个非常防御性的方法是:

    if (is_object($theObject) && (count(get_object_vars($theObject)) > 0)) {
        ...
    
        2
  •  -3
  •   Lyon    14 年前

    其中一个用户在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!"; 
    } 
    ?>