1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
- use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
- use Symfony\Component\Stopwatch\Stopwatch;
- final class TraceableValueResolver implements ArgumentValueResolverInterface
- {
- private $inner;
- private $stopwatch;
- public function __construct(ArgumentValueResolverInterface $inner, Stopwatch $stopwatch)
- {
- $this->inner = $inner;
- $this->stopwatch = $stopwatch;
- }
-
- public function supports(Request $request, ArgumentMetadata $argument): bool
- {
- $method = \get_class($this->inner).'::'.__FUNCTION__;
- $this->stopwatch->start($method, 'controller.argument_value_resolver');
- $return = $this->inner->supports($request, $argument);
- $this->stopwatch->stop($method);
- return $return;
- }
-
- public function resolve(Request $request, ArgumentMetadata $argument): iterable
- {
- $method = \get_class($this->inner).'::'.__FUNCTION__;
- $this->stopwatch->start($method, 'controller.argument_value_resolver');
- yield from $this->inner->resolve($request, $argument);
- $this->stopwatch->stop($method);
- }
- }
|