Существует ли способ проверить, имеет ли объект какие-либо поля? Например, у меня есть сервер мыла, я запрашиваю использование клиента мыла и если я называю получить метод, я или возвращаюсь объект, содержащий поля, определяющие запрос мыла, который я сделал иначе, я - возвращенный объект (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()
Этот метод должен возвратить или объект или ложь, и я только получаю объект без полей или объект с полями.
Обновлено, чтобы отразить текущее поведение, 30.05.12
empty () работал для этого, но поведение empty () менялось несколько раз. Как всегда, php-документы всегда являются лучшим источником точного поведения, а комментарии на этих страницах обычно содержат хорошую историю изменений с течением времени. Если вы хотите проверить отсутствие свойств объекта, на данный момент можно использовать очень защитный метод:
if (is_object($theObject) && (count(get_object_vars($theObject)) > 0)) {
...
Один из кодов, добавленных пользователем на странице 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!";
}
?>