--TEST-- Reflection and property_exists() --FILE-- e = 6; $oC = new C; $pc = array($oA, 'A', 'B', 'C', $oC); $pr = array('a', 'b', 'c', 'd', 'e'); foreach($pc as $p1) { if (is_object($p1)) { $p1->test($p1, $pr); } else { $r = new ReflectionMethod($p1, 'test'); $r->invoke(NULL, $p1, $pr); } echo "===GLOBAL===\n"; foreach($pr as $p2) { echo $p1, '::$' , $p2, "\n"; var_dump(property_exists($p1, $p2)); } } echo "===PROBLEMS===\n"; var_dump(property_exists(NULL, 'empty')); var_dump(property_exists(25,'empty')); var_dump(property_exists('','')); var_dump(property_exists('A','')); var_dump(property_exists('A','123')); var_dump(property_exists('A','init')); var_dump(property_exists('A','empty')); var_dump(property_exists(new A, '')); var_dump(property_exists(new A, '123')); var_dump(property_exists(new A, 'init')); var_dump(property_exists(new A, 'empty')); ?> ===DONE=== --EXPECTF-- ===A=== obj(A)::$a bool(true) obj(A)::$b bool(true) obj(A)::$c bool(true) obj(A)::$d bool(false) obj(A)::$e bool(true) ===GLOBAL=== obj(A)::$a bool(true) obj(A)::$b bool(true) obj(A)::$c bool(true) obj(A)::$d bool(false) obj(A)::$e bool(true) ===A=== A::$a bool(true) A::$b bool(true) A::$c bool(true) A::$d bool(false) A::$e bool(false) ===GLOBAL=== A::$a bool(true) A::$b bool(true) A::$c bool(true) A::$d bool(false) A::$e bool(false) ===B=== B::$a bool(true) B::$b bool(true) B::$c bool(true) B::$d bool(false) B::$e bool(false) ===GLOBAL=== B::$a bool(true) B::$b bool(true) B::$c bool(true) B::$d bool(false) B::$e bool(false) ===C=== C::$a bool(true) C::$b bool(true) C::$c bool(false) C::$d bool(true) C::$e bool(false) ===GLOBAL=== C::$a bool(true) C::$b bool(true) C::$c bool(false) C::$d bool(true) C::$e bool(false) ===C=== obj(C)::$a bool(true) obj(C)::$b bool(true) obj(C)::$c bool(false) obj(C)::$d bool(true) obj(C)::$e bool(false) ===GLOBAL=== obj(C)::$a bool(true) obj(C)::$b bool(true) obj(C)::$c bool(false) obj(C)::$d bool(true) obj(C)::$e bool(false) ===PROBLEMS=== Warning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %d NULL Warning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %d NULL bool(false) bool(false) bool(false) bool(true) bool(true) bool(false) bool(false) bool(true) bool(true) ===DONE===