xref: /PHP-7.1/tests/classes/this.phpt (revision 7af945e2)
1--TEST--
2ZE2 $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 */
11class 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
46print $object->prop; // still shows 'Hello'
47
48$object->retrieve($other);
49print $other->prop;  // shows 'Hello'
50
51?>
52===DONE===
53--EXPECTF--
54Fatal error: Cannot re-assign $this in %sthis.php on line %d
55