Annotation of embedaddon/php/ext/reflection/tests/property_exists.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Reflection and property_exists()
! 3: --FILE--
! 4: <?php
! 5:
! 6: class A
! 7: {
! 8: public $a = 1;
! 9: protected $b = 2;
! 10: private $c = 3;
! 11:
! 12: public $empty;
! 13: public $init = 1;
! 14:
! 15: function __toString()
! 16: {
! 17: return 'obj(' . get_class($this) . ')';
! 18: }
! 19:
! 20: static function test($oc, $props)
! 21: {
! 22: echo '===' . __CLASS__ . "===\n";
! 23: foreach($props as $p2) {
! 24: echo $oc, '::$' , $p2, "\n";
! 25: var_dump(property_exists($oc, $p2));
! 26: }
! 27: }
! 28: }
! 29:
! 30: class B extends A
! 31: {
! 32: private $c = 4;
! 33:
! 34: static function test($oc, $props)
! 35: {
! 36: echo '===' . __CLASS__ . "===\n";
! 37: foreach($props as $p2) {
! 38: echo $oc, '::$' , $p2, "\n";
! 39: var_dump(property_exists($oc, $p2));
! 40: }
! 41: }
! 42: }
! 43:
! 44: class C extends B
! 45: {
! 46: private $d = 5;
! 47:
! 48: static function test($oc, $props)
! 49: {
! 50: echo '===' . __CLASS__ . "===\n";
! 51: foreach($props as $p2) {
! 52: echo $oc, '::$' , $p2, "\n";
! 53: var_dump(property_exists($oc, $p2));
! 54: }
! 55: }
! 56: }
! 57:
! 58: $oA = new A;
! 59: $oA->e = 6;
! 60:
! 61: $oC = new C;
! 62:
! 63: $pc = array($oA, 'A', 'B', 'C', $oC);
! 64: $pr = array('a', 'b', 'c', 'd', 'e');
! 65:
! 66: foreach($pc as $p1) {
! 67: if (is_object($p1)) {
! 68: $p1->test($p1, $pr);
! 69: } else {
! 70: $r = new ReflectionMethod($p1, 'test');
! 71: $r->invoke(NULL, $p1, $pr);
! 72: }
! 73: echo "===GLOBAL===\n";
! 74: foreach($pr as $p2) {
! 75: echo $p1, '::$' , $p2, "\n";
! 76: var_dump(property_exists($p1, $p2));
! 77: }
! 78: }
! 79:
! 80: echo "===PROBLEMS===\n";
! 81: var_dump(property_exists(NULL, 'empty'));
! 82: var_dump(property_exists(25,'empty'));
! 83: var_dump(property_exists('',''));
! 84: var_dump(property_exists('A',''));
! 85: var_dump(property_exists('A','123'));
! 86: var_dump(property_exists('A','init'));
! 87: var_dump(property_exists('A','empty'));
! 88: var_dump(property_exists(new A, ''));
! 89: var_dump(property_exists(new A, '123'));
! 90: var_dump(property_exists(new A, 'init'));
! 91: var_dump(property_exists(new A, 'empty'));
! 92: ?>
! 93: ===DONE===
! 94: <?php exit(0); ?>
! 95: --EXPECTF--
! 96: ===A===
! 97: obj(A)::$a
! 98: bool(true)
! 99: obj(A)::$b
! 100: bool(true)
! 101: obj(A)::$c
! 102: bool(true)
! 103: obj(A)::$d
! 104: bool(false)
! 105: obj(A)::$e
! 106: bool(true)
! 107: ===GLOBAL===
! 108: obj(A)::$a
! 109: bool(true)
! 110: obj(A)::$b
! 111: bool(true)
! 112: obj(A)::$c
! 113: bool(true)
! 114: obj(A)::$d
! 115: bool(false)
! 116: obj(A)::$e
! 117: bool(true)
! 118: ===A===
! 119: A::$a
! 120: bool(true)
! 121: A::$b
! 122: bool(true)
! 123: A::$c
! 124: bool(true)
! 125: A::$d
! 126: bool(false)
! 127: A::$e
! 128: bool(false)
! 129: ===GLOBAL===
! 130: A::$a
! 131: bool(true)
! 132: A::$b
! 133: bool(true)
! 134: A::$c
! 135: bool(true)
! 136: A::$d
! 137: bool(false)
! 138: A::$e
! 139: bool(false)
! 140: ===B===
! 141: B::$a
! 142: bool(true)
! 143: B::$b
! 144: bool(true)
! 145: B::$c
! 146: bool(true)
! 147: B::$d
! 148: bool(false)
! 149: B::$e
! 150: bool(false)
! 151: ===GLOBAL===
! 152: B::$a
! 153: bool(true)
! 154: B::$b
! 155: bool(true)
! 156: B::$c
! 157: bool(true)
! 158: B::$d
! 159: bool(false)
! 160: B::$e
! 161: bool(false)
! 162: ===C===
! 163: C::$a
! 164: bool(true)
! 165: C::$b
! 166: bool(true)
! 167: C::$c
! 168: bool(false)
! 169: C::$d
! 170: bool(true)
! 171: C::$e
! 172: bool(false)
! 173: ===GLOBAL===
! 174: C::$a
! 175: bool(true)
! 176: C::$b
! 177: bool(true)
! 178: C::$c
! 179: bool(false)
! 180: C::$d
! 181: bool(true)
! 182: C::$e
! 183: bool(false)
! 184: ===C===
! 185: obj(C)::$a
! 186: bool(true)
! 187: obj(C)::$b
! 188: bool(true)
! 189: obj(C)::$c
! 190: bool(false)
! 191: obj(C)::$d
! 192: bool(true)
! 193: obj(C)::$e
! 194: bool(false)
! 195: ===GLOBAL===
! 196: obj(C)::$a
! 197: bool(true)
! 198: obj(C)::$b
! 199: bool(true)
! 200: obj(C)::$c
! 201: bool(false)
! 202: obj(C)::$d
! 203: bool(true)
! 204: obj(C)::$e
! 205: bool(false)
! 206: ===PROBLEMS===
! 207:
! 208: Warning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %d
! 209: NULL
! 210:
! 211: Warning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %d
! 212: NULL
! 213: bool(false)
! 214: bool(false)
! 215: bool(false)
! 216: bool(true)
! 217: bool(true)
! 218: bool(false)
! 219: bool(false)
! 220: bool(true)
! 221: bool(true)
! 222: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>