public ProxyServicesPass::process(ContainerBuilder $container)
You can modify the container here before it is dumped to PHP code.
Parameters
ContainerBuilder $container:
Overrides CompilerPassInterface::process
File
- core/lib/Drupal/Core/DependencyInjection/Compiler/ProxyServicesPass.php, line 18
Class
- ProxyServicesPass
- Replaces all services with a lazy flag.
Namespace
Drupal\Core\DependencyInjection\Compiler
Code
public function process(ContainerBuilder $container) { foreach ($container->getDefinitions() as $service_id => $definition) { if ($definition->isLazy()) { $proxy_class = ProxyBuilder::buildProxyClassName($definition->getClass()); if (class_exists($proxy_class)) { // Copy the existing definition to a new entry. $definition->setLazy(FALSE); // Ensure that the service is accessible. $definition->setPublic(TRUE); $new_service_id = 'drupal.proxy_original_service.' . $service_id; $container->setDefinition($new_service_id, $definition); $container->register($service_id, $proxy_class) ->setArguments([new Reference('service_container'), $new_service_id]); } else { $class_name = $definition->getClass(); // Find the root namespace. $match = []; preg_match('/([a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+)\\\\(.+)/', $class_name, $match); $root_namespace = $match[1]; // Find the root namespace path. $root_namespace_dir = '[namespace_root_path]'; $namespaces = $container->getParameter('container.namespaces'); // Hardcode Drupal Core, because it is not registered. $namespaces['Drupal\Core'] = 'core/lib/Drupal/Core'; if (isset($namespaces[$root_namespace])) { $root_namespace_dir = $namespaces[$root_namespace]; } $message = <<<EOF Missing proxy class '$proxy_class' for lazy service '$service_id'. Use the following command to generate the proxy class: php core/scripts/generate-proxy-class.php '$class_name' "$root_namespace_dir" EOF; trigger_error($message, E_USER_WARNING); } } } }
Please login to continue.