public static function fromArray($data) { if (!array_key_exists('value', $data) || !array_key_exists('reasons', $data)) { throw new \InvalidArgumentException('array does not contain \'value\' or \'reasons\''); } if (!is_array($data['reasons'])) { throw new \InvalidArgumentException('\'reasons\' must be an array'); } $scorePart = new self(); $scorePart->setValue($data['value']); $scorePart->setReasons($data['reasons']); return $scorePart; }