code: public static function getFqcnFromPhpCode(string $code) : ?string
      {
          try {
              $tokens    = token_get_all($code);
              $namespace = '';
  
              for ($index = 0; isset($tokens[$index]); $index++) {
  
                  if (! isset($tokens[$index][0])) {
                      continue;
                  }
  
                  if (T_NAMESPACE === $tokens[$index][0]) {
                      $index += 2; // Skip namespace keyword and whitespace
                      while (isset($tokens[$index]) && is_array($tokens[$index])) {
                          $namespace .= $tokens[$index++][1];
                      }
                  }
  
                  // is it a class ?
                  if (T_CLASS === $tokens[$index][0] && count($tokens[$index + 2]) > 1) {
                      $index += 2; // Skip class keyword and whitespace
  
                      $fqcn = $namespace . '\\' . $tokens[$index][1];
  
                      return $fqcn;
  //
  //                    if (class_exists($fqcn)) {
  //                        return $fqcn;
  //                    }
                  }
  
                  // is it an interface ?
                  if (T_INTERFACE === $tokens[$index][0] && count($tokens[$index + 2]) > 1) {
                      $index += 2; // Skip class keyword and whitespace
  
                      $fqcn = $namespace . '\\' . $tokens[$index][1];
  
                      return $fqcn;
  //
  //                    if (interface_exists($fqcn)) {
  //                        return $fqcn;
  //                    }
                  }
              }
          } catch (\Exception $e) {
              // ... so what ?
          }
  
          return null;
      }
docs: @param string $code
  
  @return null|string