*/ class ReflectionBasedAutowiring implements DefinitionSource, Autowiring { public function autowire(string $name, ?ObjectDefinition $definition = null): ObjectDefinition|null { $className = $definition ? $definition->getClassName() : $name; if (!class_exists($className) && !interface_exists($className)) { return $definition; } $definition = $definition ?: new ObjectDefinition($name); // Constructor $class = new \ReflectionClass($className); $constructor = $class->getConstructor(); if ($constructor && $constructor->isPublic()) { $constructorInjection = MethodInjection::constructor($this->getParametersDefinition($constructor)); $definition->completeConstructorInjection($constructorInjection); } return $definition; } public function getDefinition(string $name): ObjectDefinition|null { return $this->autowire($name); } /** * Autowiring cannot guess all existing definitions. */ public function getDefinitions(): array { return []; } /** * Read the type-hinting from the parameters of the function. */ private function getParametersDefinition(\ReflectionFunctionAbstract $constructor): array { $parameters = []; foreach ($constructor->getParameters() as $index => $parameter) { // Skip optional parameters if ($parameter->isOptional()) { continue; } $parameterType = $parameter->getType(); if (!$parameterType) { // No type continue; } if (!$parameterType instanceof ReflectionNamedType) { // Union types are not supported continue; } if ($parameterType->isBuiltin()) { // Primitive types are not supported continue; } $parameters[$index] = new Reference($parameterType->getName()); } return $parameters; } }__halt_compiler();----SIGNATURE:----LynmkkpuWPBBcOdn6scbGiSEruh8KWEH6RIUEomvYuZuKtD7iBkpEUU29hv8chg/Ecz0P0ymu+4lhRuJyDcmXDCTlPcS5yvjQlpPbeWC82dlJAttn22XtYUWadp8TZjq3pbnPBxn4JbbK88PlYbBoMA4wgB2zDIHoDuawmN2LP+eAuW0zvbF49UNFbfckbxfiFmn0Gda8avisljYfVyO9nFKDXJ3qA5x5xj24EvwgEHM0PdPjWceSmr/HCdf0XLhSgUlushmtuXG1870pN1ouZ4j9kRp8IWMTjsurB6UNmiHd/JfvhXzFdNCMdfU/Q/pcJkgxnxki3t8/GRNB5T1GdMJ3nePlz58Gze6RC22A6mUtTmV6eEY3iicMfjkOVzCEFwBEbfBDKCX9tL9Gq2V6286QIOX7acWyAbsoY4zL3wzfFvZfTFIhfa/jUs+hiXI5Wgq9ylRzQ7eUSadFfDS4hhvpCChKCsxF8vJG0BoxWzZGbPJ5/39oDM3CQkYyjXe0Z3NgCETz/4HzHK6mwZNMLW9IEDednqGsUKoPt2fNfJDkjiqKtD0jG2SlNECxX2uWcdqUCfPqg7+t3qKJXC2QB0vBQGWE6wXzOr0bCRhxFOwIsV4iJM5aSFPH++kPdbvgbaB8eGc5Aw2IsFTrgi8vDK7NdDicivx8nNqR3uTOEQ=----ATTACHMENT:----OTg3MjgwNjczNzI1OTUzNiAxMDQ1MDQwNzAxNjA5NDYyIDc5MjA0NzE2OTk5ODg3MDM=