name: YamlFileLoader class_comment: '# * YamlFileLoader loads YAML files service definitions. # * # * @author Fabien Potencier ' dependencies: - name: Alias type: class source: Symfony\Component\DependencyInjection\Alias - name: AbstractArgument type: class source: Symfony\Component\DependencyInjection\Argument\AbstractArgument - name: BoundArgument type: class source: Symfony\Component\DependencyInjection\Argument\BoundArgument - name: IteratorArgument type: class source: Symfony\Component\DependencyInjection\Argument\IteratorArgument - name: ServiceClosureArgument type: class source: Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument - name: ServiceLocatorArgument type: class source: Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument - name: TaggedIteratorArgument type: class source: Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument - name: ChildDefinition type: class source: Symfony\Component\DependencyInjection\ChildDefinition - name: ContainerBuilder type: class source: Symfony\Component\DependencyInjection\ContainerBuilder - name: ContainerInterface type: class source: Symfony\Component\DependencyInjection\ContainerInterface - name: Definition type: class source: Symfony\Component\DependencyInjection\Definition - name: InvalidArgumentException type: class source: Symfony\Component\DependencyInjection\Exception\InvalidArgumentException - name: LogicException type: class source: Symfony\Component\DependencyInjection\Exception\LogicException - name: RuntimeException type: class source: Symfony\Component\DependencyInjection\Exception\RuntimeException - name: ExtensionInterface type: class source: Symfony\Component\DependencyInjection\Extension\ExtensionInterface - name: Reference type: class source: Symfony\Component\DependencyInjection\Reference - name: Expression type: class source: Symfony\Component\ExpressionLanguage\Expression - name: ParseException type: class source: Symfony\Component\Yaml\Exception\ParseException - name: YamlParser type: class source: Symfony\Component\Yaml\Parser - name: TaggedValue type: class source: Symfony\Component\Yaml\Tag\TaggedValue - name: Yaml type: class source: Symfony\Component\Yaml\Yaml properties: [] methods: - name: parseDefaults visibility: private parameters: - name: '&$content' - name: file comment: "# * YamlFileLoader loads YAML files service definitions.\n# *\n# * @author\ \ Fabien Potencier \n# */\n# class YamlFileLoader extends\ \ FileLoader\n# {\n# private const SERVICE_KEYWORDS = [\n# 'alias' => 'alias',\n\ # 'parent' => 'parent',\n# 'class' => 'class',\n# 'shared' => 'shared',\n# 'synthetic'\ \ => 'synthetic',\n# 'lazy' => 'lazy',\n# 'public' => 'public',\n# 'abstract'\ \ => 'abstract',\n# 'deprecated' => 'deprecated',\n# 'factory' => 'factory',\n\ # 'file' => 'file',\n# 'arguments' => 'arguments',\n# 'properties' => 'properties',\n\ # 'configurator' => 'configurator',\n# 'calls' => 'calls',\n# 'tags' => 'tags',\n\ # 'decorates' => 'decorates',\n# 'decoration_inner_name' => 'decoration_inner_name',\n\ # 'decoration_priority' => 'decoration_priority',\n# 'decoration_on_invalid' =>\ \ 'decoration_on_invalid',\n# 'autowire' => 'autowire',\n# 'autoconfigure' =>\ \ 'autoconfigure',\n# 'bind' => 'bind',\n# 'constructor' => 'constructor',\n#\ \ ];\n# \n# private const PROTOTYPE_KEYWORDS = [\n# 'resource' => 'resource',\n\ # 'namespace' => 'namespace',\n# 'exclude' => 'exclude',\n# 'parent' => 'parent',\n\ # 'shared' => 'shared',\n# 'lazy' => 'lazy',\n# 'public' => 'public',\n# 'abstract'\ \ => 'abstract',\n# 'deprecated' => 'deprecated',\n# 'factory' => 'factory',\n\ # 'arguments' => 'arguments',\n# 'properties' => 'properties',\n# 'configurator'\ \ => 'configurator',\n# 'calls' => 'calls',\n# 'tags' => 'tags',\n# 'autowire'\ \ => 'autowire',\n# 'autoconfigure' => 'autoconfigure',\n# 'bind' => 'bind',\n\ # 'constructor' => 'constructor',\n# ];\n# \n# private const INSTANCEOF_KEYWORDS\ \ = [\n# 'shared' => 'shared',\n# 'lazy' => 'lazy',\n# 'public' => 'public',\n\ # 'properties' => 'properties',\n# 'configurator' => 'configurator',\n# 'calls'\ \ => 'calls',\n# 'tags' => 'tags',\n# 'autowire' => 'autowire',\n# 'bind' => 'bind',\n\ # 'constructor' => 'constructor',\n# ];\n# \n# private const DEFAULTS_KEYWORDS\ \ = [\n# 'public' => 'public',\n# 'tags' => 'tags',\n# 'autowire' => 'autowire',\n\ # 'autoconfigure' => 'autoconfigure',\n# 'bind' => 'bind',\n# ];\n# \n# protected\ \ bool $autoRegisterAliasesForSinglyImplementedInterfaces = false;\n# \n# private\ \ YamlParser $yamlParser;\n# private int $anonymousServicesCount;\n# private string\ \ $anonymousServicesSuffix;\n# \n# public function load(mixed $resource, ?string\ \ $type = null): mixed\n# {\n# $path = $this->locator->locate($resource);\n# \n\ # $content = $this->loadFile($path);\n# \n# $this->container->fileExists($path);\n\ # \n# // empty file\n# if (null === $content) {\n# return null;\n# }\n# \n# ++$this->importing;\n\ # try {\n# $this->loadContent($content, $path);\n# \n# // per-env configuration\n\ # if ($this->env && isset($content['when@'.$this->env])) {\n# if (!\\is_array($content['when@'.$this->env]))\ \ {\n# throw new InvalidArgumentException(\\sprintf('The \"when@%s\" key should\ \ contain an array in \"%s\". Check your YAML syntax.', $this->env, $path));\n\ # }\n# \n# $env = $this->env;\n# $this->env = null;\n# try {\n# $this->loadContent($content['when@'.$env],\ \ $path);\n# } finally {\n# $this->env = $env;\n# }\n# }\n# } finally {\n# --$this->importing;\n\ # }\n# $this->loadExtensionConfigs();\n# \n# return null;\n# }\n# \n# private\ \ function loadContent(array $content, string $path): void\n# {\n# // imports\n\ # $this->parseImports($content, $path);\n# \n# // parameters\n# if (isset($content['parameters']))\ \ {\n# if (!\\is_array($content['parameters'])) {\n# throw new InvalidArgumentException(\\\ sprintf('The \"parameters\" key should contain an array in \"%s\". Check your\ \ YAML syntax.', $path));\n# }\n# \n# foreach ($content['parameters'] as $key\ \ => $value) {\n# $this->container->setParameter($key, $this->resolveServices($value,\ \ $path, true));\n# }\n# }\n# \n# // extensions\n# $this->loadFromExtensions($content);\n\ # \n# // services\n# $this->anonymousServicesCount = 0;\n# $this->anonymousServicesSuffix\ \ = '~'.ContainerBuilder::hash($path);\n# $this->setCurrentDir(\\dirname($path));\n\ # try {\n# $this->parseDefinitions($content, $path);\n# } finally {\n# $this->instanceof\ \ = [];\n# $this->registerAliasesForSinglyImplementedInterfaces();\n# }\n# }\n\ # \n# public function supports(mixed $resource, ?string $type = null): bool\n\ # {\n# if (!\\is_string($resource)) {\n# return false;\n# }\n# \n# if (null ===\ \ $type && \\in_array(pathinfo($resource, \\PATHINFO_EXTENSION), ['yaml', 'yml'],\ \ true)) {\n# return true;\n# }\n# \n# return \\in_array($type, ['yaml', 'yml'],\ \ true);\n# }\n# \n# private function parseImports(array $content, string $file):\ \ void\n# {\n# if (!isset($content['imports'])) {\n# return;\n# }\n# \n# if (!\\\ is_array($content['imports'])) {\n# throw new InvalidArgumentException(\\sprintf('The\ \ \"imports\" key should contain an array in \"%s\". Check your YAML syntax.',\ \ $file));\n# }\n# \n# $defaultDirectory = \\dirname($file);\n# foreach ($content['imports']\ \ as $import) {\n# if (!\\is_array($import)) {\n# $import = ['resource' => $import];\n\ # }\n# if (!isset($import['resource'])) {\n# throw new InvalidArgumentException(\\\ sprintf('An import should provide a resource in \"%s\". Check your YAML syntax.',\ \ $file));\n# }\n# \n# $this->setCurrentDir($defaultDirectory);\n# $this->import($import['resource'],\ \ $import['type'] ?? null, $import['ignore_errors'] ?? false, $file);\n# }\n#\ \ }\n# \n# private function parseDefinitions(array $content, string $file, bool\ \ $trackBindings = true): void\n# {\n# if (!isset($content['services'])) {\n#\ \ return;\n# }\n# \n# if (!\\is_array($content['services'])) {\n# throw new InvalidArgumentException(\\\ sprintf('The \"services\" key should contain an array in \"%s\". Check your YAML\ \ syntax.', $file));\n# }\n# \n# if (\\array_key_exists('_instanceof', $content['services']))\ \ {\n# $instanceof = $content['services']['_instanceof'];\n# unset($content['services']['_instanceof']);\n\ # \n# if (!\\is_array($instanceof)) {\n# throw new InvalidArgumentException(\\\ sprintf('Service \"_instanceof\" key must be an array, \"%s\" given in \"%s\"\ .', get_debug_type($instanceof), $file));\n# }\n# $this->instanceof = [];\n# $this->isLoadingInstanceof\ \ = true;\n# foreach ($instanceof as $id => $service) {\n# if (!$service || !\\\ is_array($service)) {\n# throw new InvalidArgumentException(\\sprintf('Type definition\ \ \"%s\" must be a non-empty array within \"_instanceof\" in \"%s\". Check your\ \ YAML syntax.', $id, $file));\n# }\n# if (\\is_string($service) && str_starts_with($service,\ \ '@')) {\n# throw new InvalidArgumentException(\\sprintf('Type definition \"\ %s\" cannot be an alias within \"_instanceof\" in \"%s\". Check your YAML syntax.',\ \ $id, $file));\n# }\n# $this->parseDefinition($id, $service, $file, [], false,\ \ $trackBindings);\n# }\n# }\n# \n# $this->isLoadingInstanceof = false;\n# $defaults\ \ = $this->parseDefaults($content, $file);\n# foreach ($content['services'] as\ \ $id => $service) {\n# $this->parseDefinition($id, $service, $file, $defaults,\ \ false, $trackBindings);\n# }\n# }\n# \n# /**\n# * @throws InvalidArgumentException" - name: isUsingShortSyntax visibility: private parameters: - name: service comment: null - name: parseDefinition visibility: private parameters: - name: id - name: service - name: file - name: defaults - name: return default: 'false' - name: trackBindings default: 'true' comment: '# * @throws InvalidArgumentException When tags are invalid' - name: parseCallable visibility: private parameters: - name: callable - name: parameter - name: id - name: file comment: '# * @throws InvalidArgumentException When errors occur' - name: loadFile visibility: protected parameters: - name: file comment: '# * Loads a YAML file. # * # * @throws InvalidArgumentException when the given file is not a local file or when it does not exist' - name: validate visibility: private parameters: - name: content - name: file comment: '# * Validates a YAML file. # * # * @throws InvalidArgumentException When service file is not valid' - name: resolveServices visibility: private parameters: - name: value - name: file - name: isParameter default: 'false' comment: null - name: loadFromExtensions visibility: private parameters: - name: content comment: null - name: checkDefinition visibility: private parameters: - name: id - name: definition - name: file comment: null - name: validateAttributes visibility: private parameters: - name: message - name: attributes - name: path default: '[]' comment: null traits: - Symfony\Component\DependencyInjection\Alias - Symfony\Component\DependencyInjection\Argument\AbstractArgument - Symfony\Component\DependencyInjection\Argument\BoundArgument - Symfony\Component\DependencyInjection\Argument\IteratorArgument - Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument - Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument - Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument - Symfony\Component\DependencyInjection\ChildDefinition - Symfony\Component\DependencyInjection\ContainerBuilder - Symfony\Component\DependencyInjection\ContainerInterface - Symfony\Component\DependencyInjection\Definition - Symfony\Component\DependencyInjection\Exception\InvalidArgumentException - Symfony\Component\DependencyInjection\Exception\LogicException - Symfony\Component\DependencyInjection\Exception\RuntimeException - Symfony\Component\DependencyInjection\Extension\ExtensionInterface - Symfony\Component\DependencyInjection\Reference - Symfony\Component\ExpressionLanguage\Expression - Symfony\Component\Yaml\Exception\ParseException - Symfony\Component\Yaml\Tag\TaggedValue - Symfony\Component\Yaml\Yaml interfaces: []