34 public function create( $type =
null ) {
35 $configuredClass = $this->config->getSearchType();
36 $alternativesClasses = $this->config->getSearchTypes();
38 if ( $type !==
null && in_array( $type, $alternativesClasses ) ) {
40 } elseif ( $configuredClass !==
null ) {
41 $class = $configuredClass;
43 $class = self::getSearchEngineClass( $this->dbProvider );
46 $mappings = $this->config->getSearchMappings();
49 $spec = $mappings[$class] ?? [
'class' => $class ];
53 if ( isset( $spec[
'class'] ) && is_subclass_of( $spec[
'class'], SearchDatabase::class ) ) {
54 $args[
'extraArgs'][] = $this->dbProvider;
59 $engine = ObjectFactory::getObjectFromSpec( $spec, $args );
61 $engine->setHookContainer( $this->hookContainer );