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>