Annotation of embedaddon/php/ext/reflection/tests/property_exists.phpt, revision 1.1.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>