Как я могу проверить, является ли объект PHP пустым (т.е. не имеет свойств)?  Встроенный empty() не работает над объектами в соответствии с документом: 
 5.0.0 Objects with no properties are no longer considered empty. 
http://www.php.net/manual/en/reflectionclass.getproperties.php
 class A { public $p1 = 1; protected $p2 = 2; private $p3 = 3; } $a = new A(); $a->newProp = '1'; $ref = new ReflectionClass($a); $props = $ref->getProperties(); // now you can use $props with empty echo empty($props); print_r($props); /* output: Array ( [0] => ReflectionProperty Object ( [name] => p1 [class] => A ) [1] => ReflectionProperty Object ( [name] => p2 [class] => A ) [2] => ReflectionProperty Object ( [name] => p3 [class] => A ) ) */ 
  Обратите внимание, что newProp не возвращается в списке. 
http://php.net/manual/en/function.get-object-vars.php
  Использование get_object_vars будет возвращать newProp , но защищенные и закрытые члены не будут возвращены. 
Таким образом, в зависимости от ваших потребностей может быть гарантирована комбинация отражения и get_object_vars.
Вот решение :;
 $reflect = new ReflectionClass($theclass); $properties = $reflect->getProperties(); if(empty($properties)) { //Empty Object } 
Можете ли вы уточнить это с помощью некоторого кода? Я не понимаю, чего вы пытаетесь достичь.
Вы могли бы вызвать функцию на объекте следующим образом:
 public function IsEmpty() { return ($this->prop1 == null && $this->prop2 == null && $this->prop3 == null); } 
  Я считаю (не совсем уверен), что вы можете переопределить функцию isset для объектов.  В классе вы можете обеспечить реализацию __isset() и вернуть его соответствующим свойствам. 
Попробуйте прочитать это: http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members