objectManager = $objectManager; } /** * @return string */ abstract public function getParserClassName(); /** * @return FacetParserInterface * @throws InvalidFacetPackageException */ public function getParser() { $parser = $this->objectManager->get($this->getParserClassName()); if (!$parser instanceof FacetParserInterface) { throw new InvalidFacetPackageException('Invalid parser for package ' . __CLASS__); } return $parser; } /** * @return string */ public function getUrlDecoderClassName() { return (string)DefaultUrlDecoder::class; } /** * @throws InvalidUrlDecoderException * @return FacetUrlDecoderInterface */ public function getUrlDecoder() { $urlDecoder = $this->objectManager->get($this->getUrlDecoderClassName()); if (!$urlDecoder instanceof FacetUrlDecoderInterface) { throw new InvalidUrlDecoderException('Invalid urldecoder for package ' . __CLASS__); } return $urlDecoder; } /** * @return string */ public function getQueryBuilderClassName() { return (string)DefaultFacetQueryBuilder::class; } /** * @throws InvalidQueryBuilderException * @return FacetQueryBuilderInterface */ public function getQueryBuilder() { $urlDecoder = $this->objectManager->get($this->getQueryBuilderClassName()); if(!$urlDecoder instanceof FacetQueryBuilderInterface) { throw new InvalidQueryBuilderException('Invalid querybuilder for package ' . __CLASS__); } return $urlDecoder; } }