aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php')
-rw-r--r--srcs/phpmyadmin/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php94
1 files changed, 94 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php b/srcs/phpmyadmin/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php
new file mode 100644
index 0000000..9981096
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php
@@ -0,0 +1,94 @@
+<?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\DependencyInjection\Compiler;
+
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
+use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
+use Symfony\Component\DependencyInjection\Reference;
+
+/**
+ * Replaces aliases with actual service definitions, effectively removing these
+ * aliases.
+ *
+ * @author Johannes M. Schmitt <schmittjoh@gmail.com>
+ */
+class ReplaceAliasByActualDefinitionPass extends AbstractRecursivePass
+{
+ private $replacements;
+
+ /**
+ * Process the Container to replace aliases with service definitions.
+ *
+ * @throws InvalidArgumentException if the service definition does not exist
+ */
+ public function process(ContainerBuilder $container)
+ {
+ // First collect all alias targets that need to be replaced
+ $seenAliasTargets = [];
+ $replacements = [];
+ foreach ($container->getAliases() as $definitionId => $target) {
+ $targetId = (string) $target;
+ // Special case: leave this target alone
+ if ('service_container' === $targetId) {
+ continue;
+ }
+ // Check if target needs to be replaces
+ if (isset($replacements[$targetId])) {
+ $container->setAlias($definitionId, $replacements[$targetId])->setPublic($target->isPublic())->setPrivate($target->isPrivate());
+ }
+ // No need to process the same target twice
+ if (isset($seenAliasTargets[$targetId])) {
+ continue;
+ }
+ // Process new target
+ $seenAliasTargets[$targetId] = true;
+ try {
+ $definition = $container->getDefinition($targetId);
+ } catch (ServiceNotFoundException $e) {
+ if ('' !== $e->getId() && '@' === $e->getId()[0]) {
+ throw new ServiceNotFoundException($e->getId(), $e->getSourceId(), null, [substr($e->getId(), 1)]);
+ }
+
+ throw $e;
+ }
+ if ($definition->isPublic()) {
+ continue;
+ }
+ // Remove private definition and schedule for replacement
+ $definition->setPublic(!$target->isPrivate());
+ $definition->setPrivate($target->isPrivate());
+ $container->setDefinition($definitionId, $definition);
+ $container->removeDefinition($targetId);
+ $replacements[$targetId] = $definitionId;
+ }
+ $this->replacements = $replacements;
+
+ parent::process($container);
+ $this->replacements = [];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function processValue($value, $isRoot = false)
+ {
+ if ($value instanceof Reference && isset($this->replacements[$referenceId = (string) $value])) {
+ // Perform the replacement
+ $newId = $this->replacements[$referenceId];
+ $value = new Reference($newId, $value->getInvalidBehavior());
+ $this->container->log($this, sprintf('Changed reference of service "%s" previously pointing to "%s" to "%s".', $this->currentId, $referenceId, $newId));
+ }
+
+ return parent::processValue($value, $isRoot);
+ }
+}