PHP-объект isset и/или пустой

Есть ли способ проверить, есть ли у объекта какие-либо поля? Например, у меня есть 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, и я получаю только объект без полей или объекта с полями.

Ответы

Ответ 1

Обновлено для отражения текущего поведения, 5/30/12

empty() используется для работы, но поведение empty() несколько раз менялось. Как всегда, php docs всегда являются лучшим источником точного поведения, и комментарии на этих страницах обычно дают хорошую историю изменений с течением времени. Если вы хотите проверить отсутствие свойств объекта, в настоящий момент очень защитный метод:

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

Ответ 2

Один из кода, внесенного пользователем на странице 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!"; 
} 
?>