id; } /** * @return DateTimeImmutable */ public function getCreatedAt(): DateTimeImmutable { return $this->createdAt; } /** * @return Collection */ public function getScoreList(): Collection { return $this->scoreList; } /** * @param GameScore $score * @return Game */ public function addScore(GameScore $score): Game { if (!$this->scoreList->contains($score)) { $this->scoreList->add($score); } return $this; } /** * @param GameScore $score * @return Game */ public function removeScore(GameScore $score): Game { if ($this->scoreList->contains($score)) { $this->scoreList->removeElement($score); } return $this; } /** * @param Player $player * @return PlayerScore|null */ public function getPlayerScore(Player $player): ?GameScore { $gameScore = $this->scoreList->filter( function (GameScore $playerScore) use ($player) { return $playerScore->getPlayer() === $player; } ); return $gameScore->count() > 0 ? $gameScore->first() : null; } }