public function __construct(AbstractCalendar $calendar, User $owner, $name, Datetime $start, Datetime $end) { $this->name = $name; $this->owner = $owner; $this->calendar = $calendar; $this->participations = new ArrayCollection(); if ($start > $end) { throw new InvalidArgumentException('An event cannot start after it was ended'); } $this->end = $end; $this->start = $start; $owner->addEvent($this); $calendar->getEvents()->add($this); }