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

1.1     ! misho       1: --TEST--
        !             2: Closure 005: Lambda inside class, lifetime of $this
        !             3: --FILE--
        !             4: <?php
        !             5: 
        !             6: class A {
        !             7:        private $x;
        !             8: 
        !             9:        function __construct($x) {
        !            10:                $this->x = $x;
        !            11:        }
        !            12: 
        !            13:        function __destruct() {
        !            14:                echo "Destroyed\n";
        !            15:        }
        !            16: 
        !            17:        function getIncer($val) {
        !            18:                return function() use ($val) {
        !            19:                        $this->x += $val;
        !            20:                };
        !            21:        }
        !            22: 
        !            23:        function getPrinter() {
        !            24:                return function() {
        !            25:                        echo $this->x."\n";
        !            26:                };
        !            27:        }
        !            28:        
        !            29:        function getError() {
        !            30:                return static function() {
        !            31:                        echo $this->x."\n";
        !            32:                };
        !            33:        }
        !            34:        
        !            35:        function printX() {
        !            36:                echo $this->x."\n";
        !            37:        }
        !            38: }
        !            39: 
        !            40: $a = new A(3);
        !            41: $incer = $a->getIncer(2);
        !            42: $printer = $a->getPrinter();
        !            43: $error = $a->getError();
        !            44: 
        !            45: $a->printX();
        !            46: $printer();
        !            47: $incer();
        !            48: $a->printX();
        !            49: $printer();
        !            50: 
        !            51: unset($a);
        !            52: 
        !            53: $incer();
        !            54: $printer();
        !            55: 
        !            56: unset($incer);
        !            57: $printer();
        !            58: 
        !            59: unset($printer);
        !            60: 
        !            61: $error();
        !            62: 
        !            63: echo "Done\n";
        !            64: ?>
        !            65: --EXPECTF--
        !            66: 3
        !            67: 3
        !            68: 5
        !            69: 5
        !            70: 7
        !            71: 7
        !            72: Destroyed
        !            73: 
        !            74: Fatal error: Using $this when not in object context in %sclosure_005.php on line 28

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