$types void $this->boardMapper $this->stackMapper $this->boardMapper $this->stackMapper $modified === null $modified === null Util $this->userId $this->userId $cardId $cardId $cardId $commentId $commentId $parentId LoadSidebar $modified !== null Util ExternalCalendar ICalendarObject ICalendarProvider NotFound VCalendar VCalendar $entity->getId() getUserIdGroups $labelId VCalendar VCalendar public function __construct(Board $board) { public function __construct(Board $board) { public function __construct(Card $card, ?Board $board = null) { public function __construct(Card $card, ?Board $board = null) { try { $attachment = $this->attachmentMapper->find($attachmentId); } catch (IMapperException $e) { throw new NoPermissionException('Permission denied'); } findAll findAll $member !== null is_resource($content) is_resource($content) getShareByToken [self::class, 'listenPreShare']