vendor/symfony/http-kernel/Exception/ControllerDoesNotReturnResponseException.php line 17

Open in your IDE?
  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\Exception;
  11. /**
  12.  * @author GrĂ©goire Pineau <lyrixx@lyrixx.info>
  13.  */
  14. class ControllerDoesNotReturnResponseException extends \LogicException
  15. {
  16.     public function __construct(string $message, callable $controllerstring $fileint $line)
  17.     {
  18.         parent::__construct($message);
  19.         if (!$controllerDefinition $this->parseControllerDefinition($controller)) {
  20.             return;
  21.         }
  22.         $this->file $controllerDefinition['file'];
  23.         $this->line $controllerDefinition['line'];
  24.         $r = new \ReflectionProperty(\Exception::class, 'trace');
  25.         $r->setValue($thisarray_merge([
  26.             [
  27.                 'line' => $line,
  28.                 'file' => $file,
  29.             ],
  30.         ], $this->getTrace()));
  31.     }
  32.     private function parseControllerDefinition(callable $controller): ?array
  33.     {
  34.         if (\is_string($controller) && str_contains($controller'::')) {
  35.             $controller explode('::'$controller);
  36.         }
  37.         if (\is_array($controller)) {
  38.             try {
  39.                 $r = new \ReflectionMethod($controller[0], $controller[1]);
  40.                 return [
  41.                     'file' => $r->getFileName(),
  42.                     'line' => $r->getEndLine(),
  43.                 ];
  44.             } catch (\ReflectionException) {
  45.                 return null;
  46.             }
  47.         }
  48.         if ($controller instanceof \Closure) {
  49.             $r = new \ReflectionFunction($controller);
  50.             return [
  51.                 'file' => $r->getFileName(),
  52.                 'line' => $r->getEndLine(),
  53.             ];
  54.         }
  55.         if (\is_object($controller)) {
  56.             $r = new \ReflectionClass($controller);
  57.             try {
  58.                 $line $r->getMethod('__invoke')->getEndLine();
  59.             } catch (\ReflectionException) {
  60.                 $line $r->getEndLine();
  61.             }
  62.             return [
  63.                 'file' => $r->getFileName(),
  64.                 'line' => $line,
  65.             ];
  66.         }
  67.         return null;
  68.     }
  69. }