Sinon ça fait 5 ans que PHP inclut un objet nommé DatePeriod sur lequel on peut faire un foreach.
Il se contruit avec un DateTime de début, un DateTime de fin et un DateInterval.
http://php.net/manual/fr/class.dateperiod.php