<?php declare(strict_types=1); namespace Xentral\Modules\TimeManagement\Data; use DateTimeImmutable; use DateTimeInterface; use Exception; use Xentral\Modules\TimeManagement\Exception\InvalidDateFormatException; final class HolidayData { /** @var string $name */ private $name = 'Unknown'; /** @var DateTimeInterface $date */ private $date; private function __construct() { } /** * @param array $data * * @throws InvalidDateFormatException * * @return HolidayData * */ public static function fromDbState(array $data): HolidayData { $holidayData = new HolidayData(); $holidayData->name = $data['name']; try { $holidayData->date = new DateTimeImmutable($data['date']); } catch (Exception $e) { throw new InvalidDateFormatException('Could not convert date: ' . $data['date']); } return $holidayData; } /** * @return string */ public function getName(): string { return $this->name; } /** * @return DateTimeInterface */ public function getDate(): DateTimeInterface { return $this->date; } }