File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / classes / this.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 4 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    1: --TEST--
    2: ZE2 $this cannot be exchanged
    3: --SKIPIF--
    4: <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
    5: --FILE--
    6: <?php
    7: 
    8: /* please don't shorten this test. It shows what would happen if 
    9:  * the fatal error would have been a warning.
   10:  */
   11: class Foo
   12: {
   13:     function replace($other)
   14:     {
   15:     	echo __METHOD__ . "\n";
   16:         $this = $other;
   17:         print $this->prop;
   18:         print $other->prop;
   19:     }
   20: 
   21:     function indirect($other)
   22:     {
   23:     	echo __METHOD__ . "\n";
   24:         $this = $other;
   25:         $result = $this = $other;
   26:         print $result->prop;
   27:         print $this->prop;
   28:     }
   29: 
   30:     function retrieve(&$other)
   31:     {
   32:     	echo __METHOD__ . "\n";
   33:     	$other = $this;
   34:     }
   35: }
   36: 
   37: $object = new Foo;
   38: $object->prop = "Hello\n";
   39: 
   40: $other  = new Foo;
   41: $other->prop = "World\n";
   42: 
   43: $object->replace($other);
   44: $object->indirect($other);
   45: 
   46: print $object->prop; // still shows 'Hello'
   47: 
   48: $object->retrieve($other);
   49: print $other->prop;  // shows 'Hello'
   50: 
   51: ?>
   52: ===DONE===
   53: --EXPECTF--
   54: Fatal error: Cannot re-assign $this in %sthis.php on line %d

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