month->format('Y-m-01 00:00:00')); $start = $date->format('m'); while ($start === $date->format('m')) { $day = $this->createDay($date); $this->setDay($day); $date = $date->add(new \DateInterval('P1D')); } } protected function createDay(\DateTimeInterface $day): Day { return new Day($day); } public function getMonth(): DateTimeInterface { return $this->month; } protected function setDay(Day $day): void { $this->days['_' . $day->getDay()->format('d')] = $day; } public function getDay(DateTimeInterface $date): Day { return $this->days['_' . $date->format('d')]; } /** * @return Day[] */ public function getDays(): array { return array_values($this->days); } }