*/ class DefinitionNormalizer { public function __construct( private Autowiring $autowiring, ) { } /** * Normalize a definition that is *not* nested in another one. * * This is usually a definition declared at the root of a definition array. * * @param string $name The definition name. * @param string[] $wildcardsReplacements Replacements for wildcard definitions. * * @throws InvalidDefinition */ public function normalizeRootDefinition( mixed $definition, string $name, ?array $wildcardsReplacements = null, ): Definition { if ($definition instanceof DefinitionHelper) { $definition = $definition->getDefinition($name); } elseif (is_array($definition)) { $definition = new ArrayDefinition($definition); } elseif ($definition instanceof \Closure) { $definition = new FactoryDefinition($name, $definition); } elseif (! $definition instanceof Definition) { $definition = new ValueDefinition($definition); } // For a class definition, we replace * in the class name with the matches // *Interface -> *Impl => FooInterface -> FooImpl if ($wildcardsReplacements && $definition instanceof ObjectDefinition) { $definition->replaceWildcards($wildcardsReplacements); } if ($definition instanceof AutowireDefinition) { /** @var AutowireDefinition $definition */ $definition = $this->autowiring->autowire($name, $definition); } $definition->setName($name); try { $definition->replaceNestedDefinitions([$this, 'normalizeNestedDefinition']); } catch (InvalidDefinition $e) { throw InvalidDefinition::create($definition, sprintf( 'Definition "%s" contains an error: %s', $definition->getName(), $e->getMessage() ), $e); } return $definition; } /** * Normalize a definition that is nested in another one. * * @throws InvalidDefinition */ public function normalizeNestedDefinition(mixed $definition): mixed { $name = ''; if ($definition instanceof DefinitionHelper) { $definition = $definition->getDefinition($name); } elseif (is_array($definition)) { $definition = new ArrayDefinition($definition); } elseif ($definition instanceof \Closure) { $definition = new FactoryDefinition($name, $definition); } if ($definition instanceof DecoratorDefinition) { throw new InvalidDefinition('Decorators cannot be nested in another definition'); } if ($definition instanceof AutowireDefinition) { $definition = $this->autowiring->autowire($name, $definition); } if ($definition instanceof Definition) { $definition->setName($name); // Recursively traverse nested definitions $definition->replaceNestedDefinitions([$this, 'normalizeNestedDefinition']); } return $definition; } }__halt_compiler();----SIGNATURE:----t3k6or5f5M5FY7jqfE77Gw5AzJUMNwwZKyFtMdUfyl+wYKDU47ASF2BDoJkcAdUBVUwAl34GJsvqZclWO2iAEECqtXEK2reusHe/pYhsV75mQntHZ0i7ROIqTnBbSgC5gayMseH/PLAcpjJ2L2nhJAeMD5FbmwDg/LRbdagu9Uqn6Zj2bQBiZajRXVFJCx83sZFH+jdylpGh7k168F0MjxyGJdhB2Gz7B04s25xLh+0wLIBMKupTeWEzqfGBFQUTMkRIcCddKELR6wnPv6zxY6z0B4nZIMtna0JqN2qESgPTAfbxKBGJac66jokp5REkFQmJqvtoPeMcjxc48S3jg98AGncvQhAl5CbURETCgZ5kmxqFcyq/6YpF+9IY8PKeN/eC33usEmP+eUWFF6BC9GHTYmUi39x0GyGyyXjfJTYgC/dYrptB6S7uFAFfG7w+IQlNADdaFqc3kkQB26jT0595TVut7zA4XGAve8z1J9ia+hwmzgsepu/CIfcFCB+Wg0xNpNrltPokRfZgzmJa5fdlXu5pyRHl1GFYOZOo2gUkBFGUu1UBns7od8m3c9N27UByHBYJAyT/+NDGgUUQwUAoINvhUg3gHFQ+Btm43JXdjKb9Fx79nntqDK6rksxAAE+zusXL6M+0t1EpmTiE1MaVlRD4hwbUpKaEG82r5ew=----ATTACHMENT:----MjM5Njk4NDA4NzkzNTgzNyA4MjcxNTE1Mjc0NTgyOTk5IDQ5OTkzODMzMzg5MjkwNDc=