entityType = $entityType; $this->user = $user; $this->converterFactory = $converterFactory; $this->checkerFactory = $checkerFactory; } public function apply(QueryBuilder $queryBuilder, WhereItem $whereItem, Params $params): void { $checker = $this->checkerFactory->create($this->entityType, $this->user); $checker->check($whereItem, $params); $converter = $this->converterFactory->create($this->entityType, $this->user); $whereClause = $converter->convert($queryBuilder, $whereItem); $queryBuilder->where($whereClause); } }