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

1.1     ! misho       1: --TEST--
        !             2: Bug #32290 (calling call_user_func_array() ends in infinite loop within child class)
        !             3: --INI--
        !             4: error_reporting=8191
        !             5: --FILE--
        !             6: <?php
        !             7: 
        !             8: class TestA
        !             9: {
        !            10:        public function doSomething($i)
        !            11:        {
        !            12:                echo __METHOD__ . "($i)\n";
        !            13:                return --$i;
        !            14:        }
        !            15: 
        !            16:        public function doSomethingThis($i)
        !            17:        {
        !            18:                echo __METHOD__ . "($i)\n";
        !            19:                return --$i;
        !            20:        }
        !            21: 
        !            22:        public function doSomethingParent($i)
        !            23:        {
        !            24:                echo __METHOD__ . "($i)\n";
        !            25:                return --$i;
        !            26:        }
        !            27: 
        !            28:        public function doSomethingParentThis($i)
        !            29:        {
        !            30:                echo __METHOD__ . "($i)\n";
        !            31:                return --$i;
        !            32:        }
        !            33: 
        !            34:        public static function doSomethingStatic($i)
        !            35:        {
        !            36:                echo __METHOD__ . "($i)\n";
        !            37:                return --$i;
        !            38:        }
        !            39: }
        !            40: 
        !            41: class TestB extends TestA
        !            42: {
        !            43:        public function doSomething($i)
        !            44:        {
        !            45:                echo __METHOD__ . "($i)\n";
        !            46:                $i++;
        !            47:                if ($i >= 5) return 5;
        !            48:                return call_user_func_array(array("TestA", "doSomething"), array($i));
        !            49:        }
        !            50: 
        !            51:        public function doSomethingThis($i)
        !            52:        {
        !            53:                echo __METHOD__ . "($i)\n";
        !            54:                $i++;
        !            55:                if ($i >= 5) return 5;
        !            56:                return call_user_func_array(array($this, "TestA::doSomethingThis"), array($i));
        !            57:        }
        !            58: 
        !            59:        public function doSomethingParent($i)
        !            60:        {
        !            61:                echo __METHOD__ . "($i)\n";
        !            62:                $i++;
        !            63:                if ($i >= 5) return 5;
        !            64:                return call_user_func_array(array("parent", "doSomethingParent"), array($i));
        !            65:        }
        !            66: 
        !            67:        public function doSomethingParentThis($i)
        !            68:        {
        !            69:                echo __METHOD__ . "($i)\n";
        !            70:                $i++;
        !            71:                if ($i >= 5) return 5;
        !            72:                return call_user_func_array(array($this, "parent::doSomethingParentThis"), array($i));
        !            73:        }
        !            74: 
        !            75:        public static function doSomethingStatic($i)
        !            76:        {
        !            77:                echo __METHOD__ . "($i)\n";
        !            78:                $i++;
        !            79:                if ($i >= 5) return 5;
        !            80:                return call_user_func_array(array("TestA", "doSomethingStatic"), array($i));
        !            81:        }
        !            82: }
        !            83: 
        !            84: $x = new TestB();
        !            85: echo "===A===\n";
        !            86: var_dump($x->doSomething(1));
        !            87: echo "\n===B===\n";
        !            88: var_dump($x->doSomethingThis(1));
        !            89: echo "\n===C===\n";
        !            90: var_dump($x->doSomethingParent(1));
        !            91: echo "\n===D===\n";
        !            92: var_dump($x->doSomethingParentThis(1));
        !            93: echo "\n===E===\n";
        !            94: var_dump($x->doSomethingStatic(1));
        !            95: 
        !            96: ?>
        !            97: ===DONE===
        !            98: <?php exit(0); ?>
        !            99: --EXPECTF--
        !           100: ===A===
        !           101: TestB::doSomething(1)
        !           102: TestA::doSomething(2)
        !           103: int(1)
        !           104: 
        !           105: ===B===
        !           106: TestB::doSomethingThis(1)
        !           107: TestA::doSomethingThis(2)
        !           108: int(1)
        !           109: 
        !           110: ===C===
        !           111: TestB::doSomethingParent(1)
        !           112: TestA::doSomethingParent(2)
        !           113: int(1)
        !           114: 
        !           115: ===D===
        !           116: TestB::doSomethingParentThis(1)
        !           117: TestA::doSomethingParentThis(2)
        !           118: int(1)
        !           119: 
        !           120: ===E===
        !           121: TestB::doSomethingStatic(1)
        !           122: TestA::doSomethingStatic(2)
        !           123: int(1)
        !           124: ===DONE===

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