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

1.1     ! misho       1: --TEST--
        !             2: Closure 039: Rebinding closures, change scope, same runtime type
        !             3: --FILE--
        !             4: <?php
        !             5: 
        !             6: class A {
        !             7:        private $x;
        !             8:        
        !             9:        public function __construct($v) {
        !            10:                $this->x = $v;
        !            11:        }
        !            12:        
        !            13:        public function getIncrementor() {
        !            14:                return function() { return ++$this->x; };
        !            15:        }
        !            16: }
        !            17: class B extends A {
        !            18:        private $x;
        !            19:        public function __construct($v) {
        !            20:                parent::__construct($v);
        !            21:                $this->x = $v*2;
        !            22:        }
        !            23: }
        !            24: 
        !            25: $a = new B(-5);
        !            26: $b = new B(10);
        !            27: 
        !            28: $ca = $a->getIncrementor();
        !            29: var_dump($ca());
        !            30: 
        !            31: echo "Testing with scope given as object", "\n";
        !            32: 
        !            33: $cb = $ca->bindTo($b, $b);
        !            34: $cb2 = Closure::bind($ca, $b, $b);
        !            35: var_dump($cb());
        !            36: var_dump($cb2());
        !            37: 
        !            38: echo "Testing with scope as string", "\n";
        !            39: 
        !            40: $cb = $ca->bindTo($b, 'B');
        !            41: $cb2 = Closure::bind($ca, $b, 'B');
        !            42: var_dump($cb());
        !            43: var_dump($cb2());
        !            44: 
        !            45: $cb = $ca->bindTo($b, NULL);
        !            46: var_dump($cb());
        !            47: 
        !            48: ?>
        !            49: --EXPECTF--
        !            50: int(-4)
        !            51: Testing with scope given as object
        !            52: int(21)
        !            53: int(22)
        !            54: Testing with scope as string
        !            55: int(23)
        !            56: int(24)
        !            57: 
        !            58: Fatal error: Cannot access private property B::$x in %s on line %d

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