Issue #2937010 by longwave, andypost, neclimdul, alexpott, Charlie ChX Negyesi: Bring ContainerBuilder inline with Symfony Container and apply upstream improvements
(cherry picked from commit 9cd6d55883
)
merge-requests/2500/merge
parent
62e23703e9
commit
00b239dc20
|
@ -1,15 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// phpcs:ignoreFile Portions of this file are a direct copy of
|
|
||||||
// \Symfony\Component\DependencyInjection\Container.
|
|
||||||
|
|
||||||
namespace Drupal\Core\DependencyInjection;
|
namespace Drupal\Core\DependencyInjection;
|
||||||
|
|
||||||
use Symfony\Component\DependencyInjection\Alias;
|
use Symfony\Component\DependencyInjection\Alias;
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder as SymfonyContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder as SymfonyContainerBuilder;
|
||||||
use Symfony\Component\DependencyInjection\Container as SymfonyContainer;
|
use Symfony\Component\DependencyInjection\Container as SymfonyContainer;
|
||||||
use Symfony\Component\DependencyInjection\Definition;
|
use Symfony\Component\DependencyInjection\Definition;
|
||||||
use Symfony\Component\DependencyInjection\LazyProxy\Instantiator\RealServiceInstantiator;
|
|
||||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,11 +17,6 @@ use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||||
*/
|
*/
|
||||||
class ContainerBuilder extends SymfonyContainerBuilder {
|
class ContainerBuilder extends SymfonyContainerBuilder {
|
||||||
|
|
||||||
/**
|
|
||||||
* @var \Doctrine\Instantiator\InstantiatorInterface|null
|
|
||||||
*/
|
|
||||||
private $proxyInstantiator;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
|
@ -34,33 +25,6 @@ class ContainerBuilder extends SymfonyContainerBuilder {
|
||||||
$this->setResourceTracking(FALSE);
|
$this->setResourceTracking(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the currently set proxy instantiator or instantiates one.
|
|
||||||
*
|
|
||||||
* @return InstantiatorInterface
|
|
||||||
*/
|
|
||||||
private function getProxyInstantiator()
|
|
||||||
{
|
|
||||||
if (!$this->proxyInstantiator) {
|
|
||||||
$this->proxyInstantiator = new RealServiceInstantiator();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->proxyInstantiator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A 1to1 copy of parent::shareService.
|
|
||||||
*
|
|
||||||
* @todo https://www.drupal.org/project/drupal/issues/2937010 Since Symfony
|
|
||||||
* 3.4 this is not a 1to1 copy.
|
|
||||||
*/
|
|
||||||
protected function shareService(Definition $definition, $service, $id, array &$inlineServices)
|
|
||||||
{
|
|
||||||
if ($definition->isShared()) {
|
|
||||||
$this->services[$lowerId = strtolower($id)] = $service;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overrides Symfony\Component\DependencyInjection\ContainerBuilder::set().
|
* Overrides Symfony\Component\DependencyInjection\ContainerBuilder::set().
|
||||||
*
|
*
|
||||||
|
@ -87,7 +51,7 @@ class ContainerBuilder extends SymfonyContainerBuilder {
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function register($id, $class = null): Definition {
|
public function register($id, $class = NULL): Definition {
|
||||||
if (strtolower($id) !== $id) {
|
if (strtolower($id) !== $id) {
|
||||||
throw new \InvalidArgumentException("Service ID names must be lowercase: $id");
|
throw new \InvalidArgumentException("Service ID names must be lowercase: $id");
|
||||||
}
|
}
|
||||||
|
@ -135,24 +99,6 @@ class ContainerBuilder extends SymfonyContainerBuilder {
|
||||||
parent::setParameter($name, $value);
|
parent::setParameter($name, $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* A 1to1 copy of parent::callMethod.
|
|
||||||
*
|
|
||||||
* @todo https://www.drupal.org/project/drupal/issues/2937010 Since Symfony
|
|
||||||
* 3.4 this is not a 1to1 copy.
|
|
||||||
*/
|
|
||||||
protected function callMethod($service, $call, array &$inlineServices = array()) {
|
|
||||||
$services = self::getServiceConditionals($call[1]);
|
|
||||||
|
|
||||||
foreach ($services as $s) {
|
|
||||||
if (!$this->has($s)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->resolveValue($call[1])));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue