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;
    }
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;
    }
@param string $code

@return null|string