id; } /** * @param mixed[] $json */ public static function createFromArray(array $json): self { array_key_exists('name', $json) || throw InvalidDataException::create( $json, 'Invalid input. "name" is missing.' ); return new self($json['name'], $json['id'] ?? null, $json['icon'] ?? null); } /** * @return mixed[] */ public function jsonSerialize(): array { $json = parent::jsonSerialize(); if ($this->id !== null) { $json['id'] = $this->id; } return $json; } }