1--TEST-- 2DatePeriod can be used as an IteratorAggregate 3--FILE-- 4<?php 5 6$period = new DatePeriod('R2/2012-07-01T00:00:00Z/P7D'); 7foreach ($period as $i => $date) { 8 echo "$i: ", $date->format('Y-m-d'), "\n"; 9} 10 11echo "\n"; 12foreach ($period->getIterator() as $i => $date) { 13 echo "$i: ", $date->format('Y-m-d'), "\n"; 14} 15 16echo "\n"; 17$iter = $period->getIterator(); 18for (; $iter->valid(); $iter->next()) { 19 $i = $iter->key(); 20 $date = $iter->current(); 21 echo "$i: ", $date->format('Y-m-d'), "\n"; 22} 23 24echo "\n"; 25$iter->rewind(); 26for (; $iter->valid(); $iter->next()) { 27 $i = $iter->key(); 28 $date = $iter->current(); 29 echo "$i: ", $date->format('Y-m-d'), "\n"; 30} 31 32echo "\n"; 33foreach (new IteratorIterator($period) as $i => $date) { 34 echo "$i: ", $date->format('Y-m-d'), "\n"; 35} 36 37// Extension that does not overwrite getIterator(). 38class MyDatePeriod1 extends DatePeriod { 39} 40 41echo "\n"; 42$period = new MyDatePeriod1('R2/2012-07-01T00:00:00Z/P7D'); 43foreach ($period as $i => $date) { 44 echo "$i: ", $date->format('Y-m-d'), "\n"; 45} 46 47// Extension that does overwrite getIterator(). 48class MyDatePeriod2 extends DatePeriod { 49 public function getIterator(): Iterator { 50 return new ArrayIterator([1, 2, 3]); 51 } 52} 53 54echo "\n"; 55$period = new MyDatePeriod2('R2/2012-07-01T00:00:00Z/P7D'); 56foreach ($period as $i => $notDate) { 57 echo "$i: $notDate\n"; 58} 59 60?> 61--EXPECTF-- 62Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d 630: 2012-07-01 641: 2012-07-08 652: 2012-07-15 66 670: 2012-07-01 681: 2012-07-08 692: 2012-07-15 70 710: 2012-07-01 721: 2012-07-08 732: 2012-07-15 74 750: 2012-07-01 761: 2012-07-08 772: 2012-07-15 78 790: 2012-07-01 801: 2012-07-08 812: 2012-07-15 82 83 84Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d 850: 2012-07-01 861: 2012-07-08 872: 2012-07-15 88 89 90Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d 910: 1 921: 2 932: 3 94