public static function fromArray($data) { if (!array_key_exists('totalScore', $data) || !array_key_exists('scoreParts', $data)) { throw new \InvalidArgumentException('array does not contain \'totalScore\' or \'scoreParts\''); } if (!is_array($data['scoreParts'])) { throw new \InvalidArgumentException('\'scoreParts\' must be an array'); } $score = new self(); $score->setTotalScore($data['totalScore']); foreach ($data['scoreParts'] as $keyScore => $scorePart) { $score->addScorePart($keyScore, ScorePart::fromArray($scorePart)); } return $score; }