acquia_search-3.0.1/src/PreferredCoreServiceFactory.php

src/PreferredCoreServiceFactory.php
<?php

declare(strict_types=1);

namespace Drupal\acquia_search;

use Drupal\acquia_connector\Subscription;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\search_api\ServerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;

/**
 * Factory for creating preferred core service instances.
 */
class PreferredCoreServiceFactory {

  /**
   * Event Dispatcher Service.
   *
   * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
   */
  private $dispatcher;

  /**
   * Module Handler service.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  private $moduleHandler;

  /**
   * The subscription.
   *
   * @var \Drupal\acquia_connector\Subscription
   */
  private $subscription;

  /**
   * The API client for Acquia Search.
   *
   * @var \Drupal\acquia_search\AcquiaSearchApiClient
   */
  private $acquiaSearchApiClient;

  /**
   * Instantiated existing instances for server IDs.
   *
   * @var \Drupal\acquia_search\PreferredCoreService[]
   */
  private $instances = [];

  /**
   * Constructs a new PreferredCoreServiceFactory object.
   *
   * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $dispatcher
   *   The event dispatcher.
   * @param \Drupal\acquia_connector\Subscription $subscription
   *   Acquia Subscription Service.
   * @param \Drupal\acquia_search\AcquiaSearchApiClient $acquia_search_api_client
   *   Acquia Search API Client.
   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
   *   The module handler (for deprecated alter hook).
   */
  public function __construct(EventDispatcherInterface $dispatcher, Subscription $subscription, AcquiaSearchApiClient $acquia_search_api_client, ModuleHandlerInterface $module_handler) {
    $this->dispatcher = $dispatcher;
    $this->subscription = $subscription;
    $this->acquiaSearchApiClient = $acquia_search_api_client;
    $this->moduleHandler = $module_handler;
  }

  /**
   * Gets a preferred core service instance for a Search API server.
   *
   * @param string|\Drupal\search_api\ServerInterface $server
   *   The Search API server ID.
   *
   * @return \Drupal\acquia_search\PreferredCoreService
   *   The preferred core service instance.
   */
  public function get($server): PreferredCoreService {
    $server_id = ($server instanceof ServerInterface) ? $server->id() : $server;
    if (!isset($this->instances[$server_id])) {
      $this->instances[$server_id] = new PreferredCoreService(
        $server,
        $this->dispatcher,
        $this->subscription,
        $this->acquiaSearchApiClient,
        $this->moduleHandler
      );
    }
    return $this->instances[$server_id];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc