*/ class ParameterResolver { /** @var DefinitionResolver */ private $definitionResolver; /** * @param DefinitionResolver $definitionResolver Will be used to resolve nested definitions. */ public function __construct(DefinitionResolver $definitionResolver) { $this->definitionResolver = $definitionResolver; } /** * @throws InvalidDefinition A parameter has no value defined or guessable. * @return array Parameters to use to call the function. */ public function resolveParameters( MethodInjection $definition = null, ReflectionMethod $method = null, array $parameters = [], ) { $args = []; if (! $method) { return $args; } $definitionParameters = $definition ? $definition->getParameters() : []; foreach ($method->getParameters() as $index => $parameter) { if (array_key_exists($parameter->getName(), $parameters)) { // Look in the $parameters array $value = &$parameters[$parameter->getName()]; } elseif (array_key_exists($index, $definitionParameters)) { // Look in the definition $value = &$definitionParameters[$index]; } else { // If the parameter is optional and wasn't specified, we take its default value if ($parameter->isDefaultValueAvailable() || $parameter->isOptional()) { $args[] = $this->getParameterDefaultValue($parameter, $method); continue; } throw new InvalidDefinition(sprintf( 'Parameter $%s of %s has no value defined or guessable', $parameter->getName(), $this->getFunctionName($method) )); } // Nested definitions if ($value instanceof Definition) { // If the container cannot produce the entry, we can use the default parameter value if ($parameter->isOptional() && ! $this->definitionResolver->isResolvable($value)) { $value = $this->getParameterDefaultValue($parameter, $method); } else { $value = $this->definitionResolver->resolve($value); } } $args[] = &$value; } return $args; } /** * Returns the default value of a function parameter. * * @throws InvalidDefinition Can't get default values from PHP internal classes and functions * @return mixed */ private function getParameterDefaultValue(ReflectionParameter $parameter, ReflectionMethod $function) { try { return $parameter->getDefaultValue(); } catch (\ReflectionException $e) { throw new InvalidDefinition(sprintf( 'The parameter "%s" of %s has no type defined or guessable. It has a default value, ' . 'but the default value can\'t be read through Reflection because it is a PHP internal class.', $parameter->getName(), $this->getFunctionName($function) )); } } private function getFunctionName(ReflectionMethod $method): string { return $method->getName() . '()'; } } __halt_compiler();----SIGNATURE:----Ieytti55QKfBbq7woaivh1YCCHRd4R//3D9gny3pz9Plik0sHSg4AfVfqqpLWqDZVIM84F4ZVFzDpm4KxpNLUtOK0sw6ZUo+3SdPpAjduyX7p8PxjoXb1CiT2kwRLh/Zk1zNcBMFju399T9GOiOBXgQyBxAw2lJYrpy8RAQq14FW/8CC1X9E+EdjS620Cq+SWnYLbvgA05Ie+J57oE9ha6fa99D1wrPKdPPYDDIpdJ0bjh9C290OmygZQ3sk1SebBPbxjAHbGxvE4u+IzhCMwQz/zV50hPUwlM7gUkCKszPvLxZ8KhlA3/KvAYbDvWXCAR2n/HaEm/9iBuz4jhZt/v4B5DGR1pePwayIpIomE0zB+0Uvk7Jpum3lVDzIlYtH1kxoKSzEJ8ZRtACZo0GdC24D+m1YqhvSgBNqT+00EdoI60Ie+AnED/zjPDk6zaLY67Feug/xmMlkElqtp08J6iFXq3uHCINAQ7/Gy1yE8m8eiMAHASDEA7TjmPT9lNTOrB3qT3yiy32VR0WkB23rHB09FoXuSezNw81qB3FlqVZJZG2nLlTHGUN0LcYPMxBsAnD8RzBwQ5kATQqzZL4VEv7UI4XWF2yiFXnRt0Xrmienskz0g/13L0+w3otrZll7kcpd26WfTfaWJcp2/VWI5Dsr8c4RZW0Q8hCbOP5XtsQ=----ATTACHMENT:----MTE3MTY3Mjk4MzM3MjAyMyA4NzY3MzgwOTE1MzY5Nzk4IDM5ODEwNjE0NDMwNDk0MTk=