1--TEST--
2Test DateInterval::__serialize and DateInterval::__unserialize
3--FILE--
4<?php
5date_default_timezone_set("Europe/London");
6
7$d = new DateInterval('P2Y4DT6H8M');
8echo "Original object:\n";
9var_dump($d);
10
11echo "\n\nSerialised object:\n";
12$s = serialize($d);
13var_dump($s);
14
15echo "\n\nUnserialised object:\n";
16$e = unserialize($s);
17var_dump($e);
18
19echo "\n\nCalling __serialize manually:\n";
20var_dump($d->__serialize());
21
22echo "\n\nUsed serialised interval:\n";
23$now = new DateTimeImmutable("2022-04-22 16:25:11 BST");
24var_dump($now->add($e));
25var_dump($now->sub($e));
26?>
27--EXPECTF--
28Original object:
29object(DateInterval)#1 (10) {
30  ["y"]=>
31  int(2)
32  ["m"]=>
33  int(0)
34  ["d"]=>
35  int(4)
36  ["h"]=>
37  int(6)
38  ["i"]=>
39  int(8)
40  ["s"]=>
41  int(0)
42  ["f"]=>
43  float(0)
44  ["invert"]=>
45  int(0)
46  ["days"]=>
47  bool(false)
48  ["from_string"]=>
49  bool(false)
50}
51
52
53Serialised object:
54string(164) "O:12:"DateInterval":10:{s:1:"y";i:2;s:1:"m";i:0;s:1:"d";i:4;s:1:"h";i:6;s:1:"i";i:8;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;}"
55
56
57Unserialised object:
58object(DateInterval)#2 (10) {
59  ["y"]=>
60  int(2)
61  ["m"]=>
62  int(0)
63  ["d"]=>
64  int(4)
65  ["h"]=>
66  int(6)
67  ["i"]=>
68  int(8)
69  ["s"]=>
70  int(0)
71  ["f"]=>
72  float(0)
73  ["invert"]=>
74  int(0)
75  ["days"]=>
76  bool(false)
77  ["from_string"]=>
78  bool(false)
79}
80
81
82Calling __serialize manually:
83array(%d) {
84  ["y"]=>
85  int(2)
86  ["m"]=>
87  int(0)
88  ["d"]=>
89  int(4)
90  ["h"]=>
91  int(6)
92  ["i"]=>
93  int(8)
94  ["s"]=>
95  int(0)
96  ["f"]=>
97  float(0)
98  ["invert"]=>
99  int(0)
100  ["days"]=>
101  bool(false)
102  ["from_string"]=>
103  bool(false)
104}
105
106
107Used serialised interval:
108object(DateTimeImmutable)#4 (3) {
109  ["date"]=>
110  string(26) "2024-04-26 22:33:11.000000"
111  ["timezone_type"]=>
112  int(2)
113  ["timezone"]=>
114  string(3) "BST"
115}
116object(DateTimeImmutable)#4 (3) {
117  ["date"]=>
118  string(26) "2020-04-18 10:17:11.000000"
119  ["timezone_type"]=>
120  int(2)
121  ["timezone"]=>
122  string(3) "BST"
123}
124