2010-08-10 57 views
13

有沒有辦法來檢查對象是否有任何字段?例如,我有一個肥皂服務器,我正在查詢使用肥皂客戶端,如果我調用一個get方法,我要麼返回一個對象包含字段定義肥皂查詢我做了,否則我返回對象(stdClass)#3(0 ){}。PHP對象isset和/或空

有沒有辦法告訴對象是否有東西?

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

這個方法應該返回爲對象或假,我只接收不帶域或領域對象的對象。

回答

20

更新以反映當前的行爲,12年5月30日

空()用來爲這個工作,但空()的行爲已經改變了幾次。與往常一樣,php文檔始終是確切行爲的最佳來源,並且這些頁面上的評論通常會提供隨時間變化的良好歷史記錄。如果您想檢查缺乏對象的屬性,此刻爲自己辯解的方法是:

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

這做的伎倆。 – Chris 2010-08-10 14:55:18

+0

對我來說,這給出了一個錯誤:「PHP致命錯誤:不能在寫入上下文中使用函數返回值」。 AFAIK,empty()不能用於函數的返回值,只能用於變量。我錯過了什麼嗎? – 2012-05-30 06:22:58

+1

@ MW - 只有幾年。這個答案遭受了StackOverflow灰塵的影響,關於技術的答案可能隨着時間的推移而變得無效。我已經更新了它的相關性,感謝評論! – 2012-05-30 13:55:31

-3

一個用戶貢獻的代碼的PHP我認爲地址,你的檢查,如果問題空()頁該數組已填充但具有空值。

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!"; 
} 
?>