*/ final class TotalResponse implements ApiResponse { private $start; private $end; private $resolution; private $stats; private function __construct() { } public static function create(array $data): self { $stats = []; if (isset($data['stats'])) { foreach ($data['stats'] as $s) { $stats[] = TotalResponseItem::create($s); } } $model = new self(); $model->start = isset($data['start']) ? new \DateTimeImmutable($data['start']) : null; $model->end = isset($data['end']) ? new \DateTimeImmutable($data['end']) : null; $model->resolution = $data['resolution'] ?? null; $model->stats = $stats; return $model; } public function getStart(): ?\DateTimeImmutable { return $this->start; } public function getEnd(): ?\DateTimeImmutable { return $this->end; } public function getResolution(): ?string { return $this->resolution; } /** * @return TotalResponseItem[] */ public function getStats(): array { return $this->stats; } }