You are here

class UpdateServiceProvider in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Update/UpdateServiceProvider.php \Drupal\Core\Update\UpdateServiceProvider

Customizes the container for running updates.

Hierarchy

Expanded class hierarchy of UpdateServiceProvider

File

core/lib/Drupal/Core/Update/UpdateServiceProvider.php, line 15

Namespace

Drupal\Core\Update
View source
class UpdateServiceProvider implements ServiceProviderInterface, ServiceModifierInterface {

  /**
   * {@inheritdoc}
   */
  public function register(ContainerBuilder $container) {
    $definition = new Definition('Drupal\\Core\\Cache\\NullBackend', [
      'null',
    ]);
    if (method_exists($definition, 'getDeprecation')) {
      $definition
        ->setDeprecated('drupal/core', '8.8.0', 'The "%service_id%\\" service is deprecated. While updating Drupal all caches use \\Drupal\\Core\\Update\\UpdateBackend. See https://www.drupal.org/node/3066407');
    }
    else {

      // @todo Remove when we no longer support Symfony 4 in
      // https://www.drupal.org/project/drupal/issues/3197729
      $definition
        ->setDeprecated(TRUE, 'The "%service_id%\\" service is deprecated. While updating Drupal all caches use \\Drupal\\Core\\Update\\UpdateBackend. See https://www.drupal.org/node/3066407');
    }
    $definition
      ->setPublic(TRUE);
    $container
      ->setDefinition('cache.null', $definition);

    // Decorate the cache factory in order to use
    // \Drupal\Core\Update\UpdateBackend while running updates.
    $container
      ->register('update.cache_factory', UpdateCacheBackendFactory::class)
      ->setDecoratedService('cache_factory')
      ->addArgument(new Reference('update.cache_factory.inner'));
    $container
      ->addCompilerPass(new UpdateCompilerPass(), PassConfig::TYPE_REMOVE, 128);
  }

  /**
   * {@inheritdoc}
   */
  public function alter(ContainerBuilder $container) {

    // The alias-based processor requires the path_alias entity schema to be
    // installed, so we prevent it from being registered to the path processor
    // manager. We do this by removing the tags that the compiler pass looks
    // for. This means that the URL generator can safely be used during the
    // database update process.
    if ($container
      ->hasDefinition('path_alias.path_processor')) {
      $container
        ->getDefinition('path_alias.path_processor')
        ->clearTag('path_processor_inbound')
        ->clearTag('path_processor_outbound');
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
UpdateServiceProvider::alter public function Modifies existing service definitions. Overrides ServiceModifierInterface::alter
UpdateServiceProvider::register public function Registers services to the container. Overrides ServiceProviderInterface::register