*/ final readonly class NotificationProvider implements ProviderInterface { public function __construct( private Security $security, private NotificationRepository $notificationRepository, private Pagination $pagination, ) {} public function provide(Operation $operation, array $uriVariables = [], array $context = []): object { $user = $this->security->getUser(); [$page, $offset, $limit] = $this->pagination->getPagination($operation, $context); $queryBuilder = $this->notificationRepository ->createUserNotificationsQueryBuilder($user) ->setFirstResult($offset) ->setMaxResults($limit) ; $doctrinePaginator = new DoctrinePaginator($queryBuilder); return new TraversablePaginator( new ArrayIterator(iterator_to_array($doctrinePaginator, false)), $page, $limit, (float) count($doctrinePaginator), ); } }