summaryrefslogtreecommitdiff
path: root/Zend/tests/type_declarations/typed_properties_089.phpt
blob: 92de4b64aa24552c0b39e371b722b33ae7502ac5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
--TEST--
Modification of typed property during assignment must not leak
--FILE--
<?php

class A {
    public string $prop = "";
}

class B {
    public function __toString() {
        global $a;
        $a->prop = "dont ";
        $a->prop .= "leak ";
        $a->prop .= "me!";
        return "test";
    }
}

$a = new A;
$a->prop = new B;
var_dump($a);

$a = new A;
$prop = &$a->prop;
$a->prop = new B;
var_dump($a);

?>
--EXPECTF--
object(A)#1 (1) {
  ["prop"]=>
  string(4) "test"
}
object(A)#%d (1) {
  ["prop"]=>
  &string(4) "test"
}