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