Annotation of embedaddon/php/Zend/tests/object_handlers.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Magic object handlers segfaults and memory errors
        !             3: --FILE--
        !             4: <?php
        !             5: function f($x) {
        !             6:        return $x;
        !             7: }
        !             8: 
        !             9: class foo implements ArrayAccess {
        !            10:        function __get($property) {
        !            11:                $GLOBALS["y"] = $property;
        !            12:        }
        !            13:        function __set($property, $value) {
        !            14:                $GLOBALS["y"] = $property;
        !            15:        }
        !            16:        function __call($func, $args) {
        !            17:                $GLOBALS["y"] = $func;
        !            18:        }
        !            19:        static function __callStatic($func, $args) {
        !            20:                $GLOBALS["y"] = $func;
        !            21:        }
        !            22:        function offsetGet($index) {
        !            23:                $GLOBALS["y"] = $index;
        !            24:        }
        !            25:        function offsetSet($index, $newval) {
        !            26:                $GLOBALS["y"] = $index;
        !            27:        }
        !            28:        function offsetExists($index) {
        !            29:                $GLOBALS["y"] = $index;
        !            30:        }
        !            31:        function offsetUnset($index) {
        !            32:                $GLOBALS["y"] = $index;
        !            33:        }
        !            34: }
        !            35: 
        !            36: $x = new foo();
        !            37: $y = null;
        !            38: 
        !            39: // IS_CONST
        !            40: $z = $x->const_get;
        !            41: echo $y,"\n";
        !            42: $x->const_set = 1;
        !            43: echo $y,"\n";
        !            44: $x->const_call();
        !            45: echo $y,"\n";
        !            46: foo::const_callstatic();
        !            47: echo $y,"\n";
        !            48: $z = $x["const_dim_get"];
        !            49: echo $y,"\n";
        !            50: $x["const_dim_set"] = 1;
        !            51: echo $y,"\n";
        !            52: isset($x["const_dim_isset"]);
        !            53: echo $y,"\n";
        !            54: unset($x["const_dim_unset"]);
        !            55: echo $y,"\n";
        !            56: 
        !            57: // IS_CONST + conversion
        !            58: $z = $x->{1};
        !            59: echo $y,"\n";
        !            60: $x->{2} = 1;
        !            61: echo $y,"\n";
        !            62: 
        !            63: // IS_TMP_VAR
        !            64: $c = "tmp";
        !            65: $z = $x->{$c."_get"};
        !            66: echo $y,"\n";
        !            67: $x->{$c."_set"} = 1;
        !            68: echo $y,"\n";
        !            69: $x->{$c."_call"}();
        !            70: echo $y,"\n";
        !            71: $z = $x[$c."_dim_get"];
        !            72: echo $y,"\n";
        !            73: $x[$c."_dim_set"] = 1;
        !            74: echo $y,"\n";
        !            75: isset($x[$c."_dim_isset"]);
        !            76: echo $y,"\n";
        !            77: unset($x[$c."_dim_unset"]);
        !            78: echo $y,"\n";
        !            79: 
        !            80: // IS_TMP_VAR + conversion
        !            81: $c = 0;
        !            82: $z = $x->{$c+3};
        !            83: echo $y,"\n";
        !            84: $x->{$c+4} = 1;
        !            85: echo $y,"\n";
        !            86: 
        !            87: // IS_CV
        !            88: $c = "cv_get";
        !            89: $z = $x->{$c};
        !            90: echo $y,"\n";
        !            91: $c = "cv_set";
        !            92: $x->{$c} = 1;
        !            93: echo $y,"\n";
        !            94: $c = "cv_call";
        !            95: $x->{$c}();
        !            96: echo $y,"\n";
        !            97: $c = "cv_dim_get";
        !            98: $z = $x[$c];
        !            99: echo $y,"\n";
        !           100: $c = "cv_dim_set";
        !           101: $x[$c] = 1;
        !           102: echo $y,"\n";
        !           103: $c = "cv_dim_isset";
        !           104: isset($x[$c]);
        !           105: echo $y,"\n";
        !           106: $c = "cv_dim_unset";
        !           107: unset($x[$c]);
        !           108: echo $y,"\n";
        !           109: 
        !           110: // IS_CV + conversion
        !           111: $c = 5;
        !           112: $z = $x->{$c};
        !           113: echo $y,"\n";
        !           114: $c = 6;
        !           115: $x->{$c} = 1;
        !           116: echo $y,"\n";
        !           117: 
        !           118: // IS_VAR
        !           119: $z = $x->{f("var_get")};
        !           120: echo $y,"\n";
        !           121: $x->{f("var_set")} = 1;
        !           122: echo $y,"\n";
        !           123: $x->{f("var_call")}();
        !           124: echo $y,"\n";
        !           125: $z = $x[f("var_dim_get")];
        !           126: echo $y,"\n";
        !           127: $x[f("var_dim_set")] = 1;
        !           128: echo $y,"\n";
        !           129: isset($x[f("var_dim_isset")]);
        !           130: echo $y,"\n";
        !           131: unset($x[f("var_dim_unset")]);
        !           132: echo $y,"\n";
        !           133: 
        !           134: // IS_VAR + conversion
        !           135: $z = $x->{f(7)};
        !           136: echo $y,"\n";
        !           137: $x->{f(8)} = 1;
        !           138: echo $y,"\n";
        !           139: ?>
        !           140: --EXPECT--
        !           141: const_get
        !           142: const_set
        !           143: const_call
        !           144: const_callstatic
        !           145: const_dim_get
        !           146: const_dim_set
        !           147: const_dim_isset
        !           148: const_dim_unset
        !           149: 1
        !           150: 2
        !           151: tmp_get
        !           152: tmp_set
        !           153: tmp_call
        !           154: tmp_dim_get
        !           155: tmp_dim_set
        !           156: tmp_dim_isset
        !           157: tmp_dim_unset
        !           158: 3
        !           159: 4
        !           160: cv_get
        !           161: cv_set
        !           162: cv_call
        !           163: cv_dim_get
        !           164: cv_dim_set
        !           165: cv_dim_isset
        !           166: cv_dim_unset
        !           167: 5
        !           168: 6
        !           169: var_get
        !           170: var_set
        !           171: var_call
        !           172: var_dim_get
        !           173: var_dim_set
        !           174: var_dim_isset
        !           175: var_dim_unset
        !           176: 7
        !           177: 8

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>