summaryrefslogtreecommitdiff
path: root/vendor/symfony/http-kernel/DependencyInjection
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/symfony/http-kernel/DependencyInjection')
-rw-r--r--vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php23
-rw-r--r--vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php58
2 files changed, 75 insertions, 6 deletions
diff --git a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php b/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
index 64d5e02473..a3f5012e32 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
@@ -34,17 +34,19 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface
private $resolverServiceId;
private $controllerTag;
private $controllerLocator;
+ private $notTaggedControllerResolverServiceId;
- public function __construct(string $resolverServiceId = 'argument_resolver.service', string $controllerTag = 'controller.service_arguments', string $controllerLocator = 'argument_resolver.controller_locator')
+ public function __construct(string $resolverServiceId = 'argument_resolver.service', string $controllerTag = 'controller.service_arguments', string $controllerLocator = 'argument_resolver.controller_locator', string $notTaggedControllerResolverServiceId = 'argument_resolver.not_tagged_controller')
{
$this->resolverServiceId = $resolverServiceId;
$this->controllerTag = $controllerTag;
$this->controllerLocator = $controllerLocator;
+ $this->notTaggedControllerResolverServiceId = $notTaggedControllerResolverServiceId;
}
public function process(ContainerBuilder $container)
{
- if (false === $container->hasDefinition($this->resolverServiceId)) {
+ if (false === $container->hasDefinition($this->resolverServiceId) && false === $container->hasDefinition($this->notTaggedControllerResolverServiceId)) {
return;
}
@@ -137,8 +139,8 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface
} elseif (isset($bindings[$bindingName = $type.' $'.$p->name]) || isset($bindings[$bindingName = '$'.$p->name]) || isset($bindings[$bindingName = $type])) {
$binding = $bindings[$bindingName];
- list($bindingValue, $bindingId) = $binding->getValues();
- $binding->setValues([$bindingValue, $bindingId, true]);
+ list($bindingValue, $bindingId, , $bindingType, $bindingFile) = $binding->getValues();
+ $binding->setValues([$bindingValue, $bindingId, true, $bindingType, $bindingFile]);
if (!$bindingValue instanceof Reference) {
$args[$p->name] = new Reference('.value.'.$container->hash($bindingValue));
@@ -181,8 +183,17 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface
}
}
- $container->getDefinition($this->resolverServiceId)
- ->replaceArgument(0, $controllerLocatorRef = ServiceLocatorTagPass::register($container, $controllers));
+ $controllerLocatorRef = ServiceLocatorTagPass::register($container, $controllers);
+
+ if ($container->hasDefinition($this->resolverServiceId)) {
+ $container->getDefinition($this->resolverServiceId)
+ ->replaceArgument(0, $controllerLocatorRef);
+ }
+
+ if ($container->hasDefinition($this->notTaggedControllerResolverServiceId)) {
+ $container->getDefinition($this->notTaggedControllerResolverServiceId)
+ ->replaceArgument(0, $controllerLocatorRef);
+ }
$container->setAlias($this->controllerLocator, (string) $controllerLocatorRef);
}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php b/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php
new file mode 100644
index 0000000000..0efb164b72
--- /dev/null
+++ b/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\HttpKernel\DependencyInjection;
+
+use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Reference;
+
+/**
+ * Register all services that have the "kernel.locale_aware" tag into the listener.
+ *
+ * @author Pierre Bobiet <pierrebobiet@gmail.com>
+ */
+class RegisterLocaleAwareServicesPass implements CompilerPassInterface
+{
+ private $listenerServiceId;
+ private $localeAwareTag;
+
+ public function __construct(string $listenerServiceId = 'locale_aware_listener', string $localeAwareTag = 'kernel.locale_aware')
+ {
+ $this->listenerServiceId = $listenerServiceId;
+ $this->localeAwareTag = $localeAwareTag;
+ }
+
+ public function process(ContainerBuilder $container)
+ {
+ if (!$container->hasDefinition($this->listenerServiceId)) {
+ return;
+ }
+
+ $services = [];
+
+ foreach ($container->findTaggedServiceIds($this->localeAwareTag) as $id => $tags) {
+ $services[] = new Reference($id);
+ }
+
+ if (!$services) {
+ $container->removeDefinition($this->listenerServiceId);
+
+ return;
+ }
+
+ $container
+ ->getDefinition($this->listenerServiceId)
+ ->setArgument(0, new IteratorArgument($services))
+ ;
+ }
+}