* @author Timo Hund */ class FacetRegistry extends AbstractClassRegistry { /** * Array of available parser classNames * * @var array */ protected $classMap = [ 'options' => OptionsPackage::class, 'hierarchy' => HierarchyPackage::class, 'queryGroup' => QueryGroupPackage::class, 'dateRange' => DateRangePackage::class, 'numericRange' => NumericRangePackage::class, ]; /** * Default parser className * * @var string */ protected $defaultClass = OptionsPackage::class; /** * Get defaultParser * * @return string */ public function getDefaultPackage() { return $this->defaultClass; } /** * Set defaultParser * * @param string $defaultPackageClassName */ public function setDefaultPackage($defaultPackageClassName) { $this->defaultClass = $defaultPackageClassName; } /** * Get registered parser classNames * * @return array */ public function getPackages() { return $this->classMap; } /** * @param string $className * @param string $type * @throws \InvalidArgumentException */ public function registerPackage($className, $type) { return $this->register($className, $type, AbstractFacetPackage::class); } /** * Get package * * @param string $type * @return AbstractFacetPackage * @throws InvalidFacetPackageException */ public function getPackage($type) { $instance = $this->getInstance($type); if (!$instance instanceof AbstractFacetPackage) { throw new InvalidFacetPackageException('Invalid class registered for ' . htmlspecialchars($type)); } $instance->setObjectManager($this->objectManager); return $instance; } }