DependencySerializationTraitPass.php

Same filename and directory in other branches
  1. 9 core/lib/Drupal/Core/DependencyInjection/Compiler/DependencySerializationTraitPass.php
  2. 10 core/lib/Drupal/Core/DependencyInjection/Compiler/DependencySerializationTraitPass.php
  3. 11.x core/lib/Drupal/Core/DependencyInjection/Compiler/DependencySerializationTraitPass.php

Namespace

Drupal\Core\DependencyInjection\Compiler

File

core/lib/Drupal/Core/DependencyInjection/Compiler/DependencySerializationTraitPass.php

View source
<?php

namespace Drupal\Core\DependencyInjection\Compiler;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

/**
 * Sets the _serviceId property on all services.
 *
 * @see \Drupal\Core\DependencyInjection\DependencySerializationTrait
 */
class DependencySerializationTraitPass implements CompilerPassInterface {
    
    /**
     * {@inheritdoc}
     */
    public function process(ContainerBuilder $container) {
        foreach ($container->getDefinitions() as $service_id => $definition) {
            // Only add the property to services that are public (as private services
            // can not be reloaded through Container::get()) and are objects.
            if (!$definition->hasTag('parameter_service') && $definition->isPublic()) {
                $definition->setProperty('_serviceId', $service_id);
            }
        }
    }

}

Classes

Title Deprecated Summary
DependencySerializationTraitPass Sets the _serviceId property on all services.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.