Security update for Core, with self-updated composer
[yaffs-website] / vendor / symfony / http-kernel / Controller / TraceableControllerResolver.php
index f8de31cf078c1b4b66baad7304c22f9935ce9558..ce291b1e3e26907debd17816693947b1cef8d48c 100644 (file)
@@ -19,21 +19,33 @@ use Symfony\Component\HttpFoundation\Request;
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class TraceableControllerResolver implements ControllerResolverInterface
+class TraceableControllerResolver implements ControllerResolverInterface, ArgumentResolverInterface
 {
     private $resolver;
     private $stopwatch;
+    private $argumentResolver;
 
     /**
      * Constructor.
      *
-     * @param ControllerResolverInterface $resolver  A ControllerResolverInterface instance
-     * @param Stopwatch                   $stopwatch A Stopwatch instance
+     * @param ControllerResolverInterface $resolver         A ControllerResolverInterface instance
+     * @param Stopwatch                   $stopwatch        A Stopwatch instance
+     * @param ArgumentResolverInterface   $argumentResolver Only required for BC
      */
-    public function __construct(ControllerResolverInterface $resolver, Stopwatch $stopwatch)
+    public function __construct(ControllerResolverInterface $resolver, Stopwatch $stopwatch, ArgumentResolverInterface $argumentResolver = null)
     {
         $this->resolver = $resolver;
         $this->stopwatch = $stopwatch;
+        $this->argumentResolver = $argumentResolver;
+
+        // BC
+        if (null === $this->argumentResolver) {
+            $this->argumentResolver = $resolver;
+        }
+
+        if (!$this->argumentResolver instanceof TraceableArgumentResolver) {
+            $this->argumentResolver = new TraceableArgumentResolver($this->argumentResolver, $this->stopwatch);
+        }
     }
 
     /**
@@ -52,14 +64,14 @@ class TraceableControllerResolver implements ControllerResolverInterface
 
     /**
      * {@inheritdoc}
+     *
+     * @deprecated This method is deprecated as of 3.1 and will be removed in 4.0.
      */
     public function getArguments(Request $request, $controller)
     {
-        $e = $this->stopwatch->start('controller.get_arguments');
+        @trigger_error(sprintf('The %s method is deprecated as of 3.1 and will be removed in 4.0. Please use the %s instead.', __METHOD__, TraceableArgumentResolver::class), E_USER_DEPRECATED);
 
-        $ret = $this->resolver->getArguments($request, $controller);
-
-        $e->stop();
+        $ret = $this->argumentResolver->getArguments($request, $controller);
 
         return $ret;
     }