TraceableArgumentResolver.php 1009 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\HttpKernel\Controller;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\Stopwatch\Stopwatch;
  13. /**
  14. * @author Fabien Potencier <fabien@symfony.com>
  15. */
  16. class TraceableArgumentResolver implements ArgumentResolverInterface
  17. {
  18. public function __construct(
  19. private ArgumentResolverInterface $resolver,
  20. private Stopwatch $stopwatch,
  21. ) {
  22. }
  23. public function getArguments(Request $request, callable $controller, ?\ReflectionFunctionAbstract $reflector = null): array
  24. {
  25. $e = $this->stopwatch->start('controller.get_arguments');
  26. try {
  27. return $this->resolver->getArguments($request, $controller, $reflector);
  28. } finally {
  29. $e->stop();
  30. }
  31. }
  32. }