plus-8.x-4.x-dev/src/PlusServiceProvider.php

src/PlusServiceProvider.php
<?php

namespace Drupal\plus;

use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderBase;
use Drupal\plus\Core\Extension\ModuleHandler;
use Drupal\plus\Core\Extension\ThemeHandler;
use Drupal\plus\Core\Form\FormBuilder;
use Drupal\plus\Core\Render\Renderer;
use Drupal\plus\Core\Theme\Registry;
use Drupal\plus\Core\Theme\ThemeManager;
use Drupal\plus\Http\ClientFactory;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Reference;

/**
 * Class PlusServiceProvider.
 */
class PlusServiceProvider extends ServiceProviderBase {

  /**
   * {@inheritdoc}
   */
  public function alter(ContainerBuilder $container) {
    // Drupal version specific services.
    $services = ((int) \Drupal::VERSION[0]) < 8 ? $this->servicesForDrupal7() : $this->servicesForDrupal8();

    // All Drupal versions.
    $services['http_client_factory']['class'] = ClientFactory::class;

    foreach ($services as $service => $info) {
      $info += ['class' => FALSE, 'arguments' => []];
      $class = $info['class'];
      $args = $info['arguments'];
      $definition = $container->getDefinition($service);
      if ($class) {
        $definition->setClass($class);
      }
      if ($args) {
        $arguments = $definition->getArguments();
        foreach ($args as $arg) {
          $arguments[] = new Reference($arg, ContainerInterface::IGNORE_ON_INVALID_REFERENCE);
        }
        $definition->setArguments($arguments);
      }
      if ($class || $args) {
        $container->setDefinition($service, $definition);
      }
    }
  }

  protected function servicesForDrupal7() {
    return [
    ];
  }

  protected function servicesForDrupal8() {
    return [
//      'form_builder' => [
//        'class' => FormBuilder::class,
//        'arguments' => ['plugin.manager.alter'],
//      ],
//      'module_handler' => [
//        'class' => ModuleHandler::class,
//        'arguments' => ['plugin.manager.alter.module'],
//      ],
//      'renderer' => [
//        'class' => Renderer::class,
//        'arguments' => [],
//      ],
//      'theme_handler'   => [
//        'class' => ThemeHandler::class,
//      ],
//      'theme.manager'   => [
//        'class' => ThemeManager::class,
//        'arguments' => [
//          'controller_resolver',
//          'event_dispatcher',
//          'renderer',
//          'plugin.manager.theme',
//          'plugin.manager.alter.theme',
//        ],
//      ],
//      'theme.registry'  => [
//        'class' => Registry::class,
//        'arguments' => ['plugin.manager.template'],
//      ],
    ];
  }

}

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

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