original_string: protected function parseController($controller)
      {
          if (\is_string($controller) && false !== strpos($controller, '::')) {
              $controller = explode('::', $controller);
          }
  
          if (\is_array($controller)) {
              try {
                  $r = new \ReflectionMethod($controller[0], $controller[1]);
  
                  return [
                      'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0],
                      'method' => $controller[1],
                      'file' => $r->getFileName(),
                      'line' => $r->getStartLine(),
                  ];
              } catch (\ReflectionException $e) {
                  if (\is_callable($controller)) {
                      // using __call or  __callStatic
                      return [
                          'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0],
                          'method' => $controller[1],
                          'file' => 'n/a',
                          'line' => 'n/a',
                      ];
                  }
              }
          }
  
          if ($controller instanceof \Closure) {
              $r = new \ReflectionFunction($controller);
  
              $controller = [
                  'class' => $r->getName(),
                  'method' => null,
                  'file' => $r->getFileName(),
                  'line' => $r->getStartLine(),
              ];
  
              if (false !== strpos($r->name, '{closure}')) {
                  return $controller;
              }
              $controller['method'] = $r->name;
  
              if ($class = $r->getClosureScopeClass()) {
                  $controller['class'] = $class->name;
              } else {
                  return $r->name;
              }
  
              return $controller;
          }
  
          if (\is_object($controller)) {
              $r = new \ReflectionClass($controller);
  
              return [
                  'class' => $r->getName(),
                  'method' => null,
                  'file' => $r->getFileName(),
                  'line' => $r->getStartLine(),
              ];
          }
  
          return \is_string($controller) ? $controller : 'n/a';
      }
code: protected function parseController($controller)
      {
          if (\is_string($controller) && false !== strpos($controller, '::')) {
              $controller = explode('::', $controller);
          }
  
          if (\is_array($controller)) {
              try {
                  $r = new \ReflectionMethod($controller[0], $controller[1]);
  
                  return [
                      'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0],
                      'method' => $controller[1],
                      'file' => $r->getFileName(),
                      'line' => $r->getStartLine(),
                  ];
              } catch (\ReflectionException $e) {
                  if (\is_callable($controller)) {
                      // using __call or  __callStatic
                      return [
                          'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0],
                          'method' => $controller[1],
                          'file' => 'n/a',
                          'line' => 'n/a',
                      ];
                  }
              }
          }
  
          if ($controller instanceof \Closure) {
              $r = new \ReflectionFunction($controller);
  
              $controller = [
                  'class' => $r->getName(),
                  'method' => null,
                  'file' => $r->getFileName(),
                  'line' => $r->getStartLine(),
              ];
  
              if (false !== strpos($r->name, '{closure}')) {
                  return $controller;
              }
              $controller['method'] = $r->name;
  
              if ($class = $r->getClosureScopeClass()) {
                  $controller['class'] = $class->name;
              } else {
                  return $r->name;
              }
  
              return $controller;
          }
  
          if (\is_object($controller)) {
              $r = new \ReflectionClass($controller);
  
              return [
                  'class' => $r->getName(),
                  'method' => null,
                  'file' => $r->getFileName(),
                  'line' => $r->getStartLine(),
              ];
          }
  
          return \is_string($controller) ? $controller : 'n/a';
      }
code_tokens: protected function parseController ( $ controller ) { if ( \ is_string ( $ controller ) && false !== strpos ( $ controller , '::' ) ) { $ controller = explode ( '::' , $ controller ) ; } if ( \ is_array ( $ controller ) ) { try { $ r = new \ ReflectionMethod ( $ controller [ 0 ] , $ controller [ 1 ] ) ; return [ 'class' => \ is_object ( $ controller [ 0 ] ) ? \ get_class ( $ controller [ 0 ] ) : $ controller [ 0 ] , 'method' => $ controller [ 1 ] , 'file' => $ r -> getFileName ( ) , 'line' => $ r -> getStartLine ( ) , ] ; } catch ( \ ReflectionException $ e ) { if ( \ is_callable ( $ controller ) ) { // using __call or  __callStatic return [ 'class' => \ is_object ( $ controller [ 0 ] ) ? \ get_class ( $ controller [ 0 ] ) : $ controller [ 0 ] , 'method' => $ controller [ 1 ] , 'file' => 'n/a' , 'line' => 'n/a' , ] ; } } } if ( $ controller instanceof \ Closure ) { $ r = new \ ReflectionFunction ( $ controller ) ; $ controller = [ 'class' => $ r -> getName ( ) , 'method' => null , 'file' => $ r -> getFileName ( ) , 'line' => $ r -> getStartLine ( ) , ] ; if ( false !== strpos ( $ r -> name , '{closure}' ) ) { return $ controller ; } $ controller [ 'method' ] = $ r -> name ; if ( $ class = $ r -> getClosureScopeClass ( ) ) { $ controller [ 'class' ] = $ class -> name ; } else { return $ r -> name ; } return $ controller ; } if ( \ is_object ( $ controller ) ) { $ r = new \ ReflectionClass ( $ controller ) ; return [ 'class' => $ r -> getName ( ) , 'method' => null , 'file' => $ r -> getFileName ( ) , 'line' => $ r -> getStartLine ( ) , ] ; } return \ is_string ( $ controller ) ? $ controller : 'n/a' ; }
docstring: Parse a controller.
  
  @param mixed $controller The controller to parse
  
  @return array|string An array of controller data or a simple string
docstring_tokens: Parse a controller .