Annotation of embedaddon/php/Zend/tests/bug37632.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #37632 (Protected method access problem)
                      3: --FILE--
                      4: <?php
                      5: 
                      6: class A1
                      7: {
                      8:        protected function test()
                      9:        {
                     10:                echo __METHOD__ . "\n";
                     11:        }
                     12: }
                     13: 
                     14: class B1 extends A1
                     15: {
                     16:        public function doTest(A1 $obj)
                     17:        {
                     18:                echo __METHOD__ . "\n";
                     19:                $obj->test();
                     20:        }
                     21: }
                     22: 
                     23: class C1 extends A1
                     24: {
                     25:        protected function test()
                     26:        {
                     27:                echo __METHOD__ . "\n";
                     28:        }
                     29: }
                     30: 
                     31: $b = new B1;
                     32: $b->doTest(new C1);
                     33: 
                     34: class A2
                     35: {
                     36:        static protected function test()
                     37:        {
                     38:                echo __METHOD__ . "\n";
                     39:        }
                     40: }
                     41: 
                     42: class B2 extends A2
                     43: {
                     44:        static public function doTest(A2 $obj)
                     45:        {
                     46:                echo __METHOD__ . "\n";
                     47:                $obj->test();
                     48:        }
                     49: }
                     50: 
                     51: class C2 extends A2
                     52: {
                     53:        static protected function test()
                     54:        {
                     55:                echo __METHOD__ . "\n";
                     56:        }
                     57: }
                     58: 
                     59: B2::doTest(new C2);
                     60: 
                     61: /* Right now Ctor's cannot be made protected when defined in a ctor. That is
                     62:  * we cannot decrease visibility.
                     63:  *
                     64: 
                     65: interface Ctor
                     66: {
                     67:        function __construct($x);
                     68: }
                     69: 
                     70: class A3 implements Ctor
                     71: {
                     72:        protected function __construct()
                     73:        {
                     74:                echo __METHOD__ . "\n";
                     75:        }
                     76: }
                     77: 
                     78: class B3 extends A3
                     79: {
                     80:        static public function doTest()
                     81:        {
                     82:                echo __METHOD__ . "\n";
                     83:                new C3;
                     84:        }
                     85: }
                     86: 
                     87: class C3 extends A3
                     88: {
                     89:        protected function __construct()
                     90:        {
                     91:                echo __METHOD__ . "\n";
                     92:        }
                     93: }
                     94: 
                     95: B3::doTest();
                     96: 
                     97: */
                     98: 
                     99: class A4
                    100: {
                    101:        protected function __construct()
                    102:        {
                    103:                echo __METHOD__ . "\n";
                    104:        }
                    105: }
                    106: 
                    107: class B4 extends A4
                    108: {
                    109:        static public function doTest()
                    110:        {
                    111:                echo __METHOD__ . "\n";
                    112:                new C4;
                    113:        }
                    114: }
                    115: 
                    116: class C4 extends A4
                    117: {
                    118:        protected function __construct()
                    119:        {
                    120:                echo __METHOD__ . "\n";
                    121:        }
                    122: }
                    123: 
                    124: B4::doTest();
                    125: 
                    126: ?>
                    127: ===DONE===
                    128: --EXPECTF--
                    129: B1::doTest
                    130: C1::test
                    131: B2::doTest
                    132: C2::test
                    133: B4::doTest
                    134: 
                    135: Fatal error: Call to protected C4::__construct() from context 'B4' in %sbug37632.php on line %d

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