1--TEST--
2ReflectionProperty::getValue() on typed static property
3--FILE--
4<?php
5
6class Test {
7    public static int $x = 42;
8    public static int $y;
9    public static $z;
10}
11
12$rp = new ReflectionProperty('Test', 'x');
13var_dump($rp->getValue());
14
15$rp = new ReflectionProperty('Test', 'y');
16try {
17    var_dump($rp->getValue());
18} catch (Error $e) {
19    echo $e->getMessage(), "\n";
20}
21
22$rp->setValue("24");
23var_dump($rp->getValue());
24
25try {
26    $rp->setValue("foo");
27} catch (TypeError $e) {
28    echo $e->getMessage(), "\n";
29}
30var_dump($rp->getValue());
31
32Test::$z =& Test::$y;
33
34$rp = new ReflectionProperty('Test', 'z');
35try {
36    $rp->setValue("foo");
37} catch (TypeError $e) {
38    echo $e->getMessage(), "\n";
39}
40var_dump($rp->getValue());
41
42
43?>
44--EXPECT--
45int(42)
46Typed static property Test::$y must not be accessed before initialization
47int(24)
48Typed property Test::$y must be int, string used
49int(24)
50Cannot assign string to reference held by property Test::$y of type int
51int(24)
52