@@ -18,33 +18,56 @@ class C {
18
18
public string $ b ;
19
19
}
20
20
21
+ class D {
22
+ public int $ a ;
23
+ public float $ b ;
24
+ }
25
+
21
26
var_dump (unserialize ('O:1:"A":2:{s:1:"a";i:1;s:1:"b";R:2;} ' ));
22
27
var_dump (unserialize ('O:1:"B":2:{s:1:"a";i:1;s:1:"b";R:2;} ' ));
23
- var_dump (unserialize ('O:1:"A":2:{s:1:"a";N;s:1:"b";R:2;} ' ));
24
- var_dump (unserialize ('O:1:"B":2:{s:1:"a";N;s:1:"b";R:2;} ' ));
25
- var_dump (unserialize ('O:1:"C":2:{s:1:"a";i:1;s:1:"b";R:2;} ' ));
26
- var_dump (unserialize ('O:1:"C":2:{s:1:"b";s:1:"x";s:1:"a";R:2;} ' ));
28
+
29
+ try {
30
+ var_dump (unserialize ('O:1:"A":2:{s:1:"a";N;s:1:"b";R:2;} ' ));
31
+ } catch (TypeError $ e ) {
32
+ echo $ e ->getMessage (), "\n" ;
33
+ }
34
+ try {
35
+ var_dump (unserialize ('O:1:"B":2:{s:1:"a";N;s:1:"b";R:2;} ' ));
36
+ } catch (TypeError $ e ) {
37
+ echo $ e ->getMessage (), "\n" ;
38
+ }
39
+ try {
40
+ var_dump (unserialize ('O:1:"C":2:{s:1:"a";i:1;s:1:"b";R:2;} ' ));
41
+ } catch (TypeError $ e ) {
42
+ echo $ e ->getMessage (), "\n" ;
43
+ }
44
+ try {
45
+ var_dump (unserialize ('O:1:"C":2:{s:1:"b";s:1:"x";s:1:"a";R:2;} ' ));
46
+ } catch (TypeError $ e ) {
47
+ echo $ e ->getMessage (), "\n" ;
48
+ }
49
+ try {
50
+ var_dump (unserialize ('O:1:"D":2:{s:1:"a";i:1;s:1:"b";R:2;} ' ));
51
+ } catch (TypeError $ e ) {
52
+ echo $ e ->getMessage (), "\n" ;
53
+ }
27
54
28
55
?>
29
- --EXPECTF --
56
+ --EXPECT --
30
57
object(A)#1 (2) {
31
58
["a"]=>
32
59
&int(1)
33
60
["b"]=>
34
61
&int(1)
35
62
}
36
-
37
- Notice: unserialize(): Error at offset 35 of 36 bytes in %s on line %d
38
- bool(false)
39
-
40
- Notice: unserialize(): Error at offset 21 of 34 bytes in %s on line %d
41
- bool(false)
42
-
43
- Notice: unserialize(): Error at offset 33 of 34 bytes in %s on line %d
44
- bool(false)
45
-
46
- Notice: unserialize(): Error at offset 35 of 36 bytes in %s on line %d
47
- bool(false)
48
-
49
- Notice: unserialize(): Error at offset 39 of 40 bytes in %s on line %d
50
- bool(false)
63
+ object(B)#1 (2) {
64
+ ["a"]=>
65
+ &int(1)
66
+ ["b"]=>
67
+ &int(1)
68
+ }
69
+ Typed property A::$a must be int, null used
70
+ Typed property B::$b must be int, null used
71
+ Typed property C::$b must be string, int used
72
+ Typed property C::$a must be int, string used
73
+ Reference with value of type int held by property D::$a of type int is not compatible with property D::$b of type float
0 commit comments