1--TEST-- 2Test that calling DatePeriod::__unserialize() directly with wrong argument type throws 3--FILE-- 4<?php 5 6$start = new DateTime("2022-07-14 00:00:00", new DateTimeZone("UTC")); 7$interval = new DateInterval('P1D'); 8$end = new DateTime("2022-07-16 00:00:00", new DateTimeZone("UTC")); 9$period = new DatePeriod($start, $interval, $end); 10 11try { 12 $period->__unserialize( 13 [ 14 "current" => new DateTime, 15 "start" => new DateTime, 16 "end" => new DateTime, 17 "interval" => new DateInterval('P2D'), 18 "recurrences" => 2, 19 "include_start_date" => "wrong type", 20 "include_end_date" => true, 21 ] 22 ); 23} catch (\Error $e) { 24 echo $e::class, ': ', $e->getMessage(), "\n"; 25} 26 27var_dump($period); 28 29?> 30--EXPECTF-- 31Error: Invalid serialization data for DatePeriod object 32object(DatePeriod)#%d (%d) { 33 ["start"]=> 34 object(DateTime)#%d (%d) { 35 ["date"]=> 36 string(26) "2022-07-14 00:00:00.000000" 37 ["timezone_type"]=> 38 int(3) 39 ["timezone"]=> 40 string(3) "UTC" 41 } 42 ["current"]=> 43 NULL 44 ["end"]=> 45 object(DateTime)#%d (%d) { 46 ["date"]=> 47 string(26) "2022-07-16 00:00:00.000000" 48 ["timezone_type"]=> 49 int(3) 50 ["timezone"]=> 51 string(3) "UTC" 52 } 53 ["interval"]=> 54 object(DateInterval)#%d (%d) { 55 ["y"]=> 56 int(0) 57 ["m"]=> 58 int(0) 59 ["d"]=> 60 int(1) 61 ["h"]=> 62 int(0) 63 ["i"]=> 64 int(0) 65 ["s"]=> 66 int(0) 67 ["f"]=> 68 float(0) 69 ["invert"]=> 70 int(0) 71 ["days"]=> 72 bool(false) 73 ["from_string"]=> 74 bool(false) 75 } 76 ["recurrences"]=> 77 int(1) 78 ["include_start_date"]=> 79 bool(true) 80 ["include_end_date"]=> 81 bool(false) 82} 83