Nelmio\Alice\Generator\Resolver\Parameter\Chainable\StringParameterResolver::resolve PHP Method

resolve() public method

public resolve ( Parameter $parameter, ParameterBag $unresolvedParameters, ParameterBag $resolvedParameters, ResolvingContext $context = null ) : ParameterBag
$parameter Nelmio\Alice\Parameter
$unresolvedParameters Nelmio\Alice\ParameterBag
$resolvedParameters Nelmio\Alice\ParameterBag
$context Nelmio\Alice\Generator\Resolver\ResolvingContext
return Nelmio\Alice\ParameterBag
    public function resolve(Parameter $parameter, ParameterBag $unresolvedParameters, ParameterBag $resolvedParameters, ResolvingContext $context = null) : ParameterBag
    {
        $context = ResolvingContext::createFrom($context, $parameter->getKey());
        $self = $this;
        $value = preg_replace_callback(self::PATTERN, function ($match) use($self, $context, $unresolvedParameters, &$resolvedParameters, $parameter) {
            $key = $match['parameter'];
            $resolvedParameters = $self->resolveStringKey($self->resolver, $parameter, $key, $unresolvedParameters, $resolvedParameters, $context);
            return $resolvedParameters->get($key);
        }, $parameter->getValue());
        return $resolvedParameters->with($parameter->withValue($value));
    }

Usage Example

 /**
  * @expectedException \Nelmio\Alice\Throwable\Exception\Generator\Resolver\ResolverNotFoundException
  * @expectedExceptionMessage Expected method "Nelmio\Alice\Generator\Resolver\Parameter\Chainable\StringParameterResolver::resolveStringKey" to be called only if it has a resolver.
  */
 public function testThrowsAnExceptionIfNoResolverInjectedWhenRequired()
 {
     $parameter = new Parameter('foo', '<{bar}>');
     $unresolvedParameters = new ParameterBag(['bar' => 'unresolved(bar)']);
     $resolvedParameters = new ParameterBag();
     $resolver = new StringParameterResolver();
     $resolver->resolve($parameter, $unresolvedParameters, $resolvedParameters);
 }