确定FQCN是类,接口还是特征的最佳方法

时间:2016-12-27 03:08:58

标签: php oop

我试图确定FQCN是一个类,一个特征还是一个接口。这是我目前正在考虑的问题,但有没有人有更好的想法?

/**
 * @return string|null Returns the type the FQCN represents, returns null on failure
 */
function fqcnType(string $fqcn) : ?string
{
    if (interface_exists($fqcn) === true) {
        return 'interface';
    } elseif (class_exists($fqcn) === true) {
        return 'class';
    } elseif (trait_exists($fqcn) === true) {
        return 'trait';
    } elseif (function_exists($fqcn) === true) {
        return 'function';
    }

    return null;
}

function fqcn_exists(string $fqcn) : bool
{
    return fqcnType($fqcn) !== null;
}

1 个答案:

答案 0 :(得分:3)

/**
 * @return string|null Returns the type the FQCN represents, returns null on failure
 */
function fqcnType(string $fqcn) : ?string
{
    $types = [
        'interface',
        'class',
        'trait',
        'function',
    ];

    foreach($types as $type) {
        if(true === ($type.'_exists')($fqcn)) {
            return $type;
        }
    }

    return null;
}

function fqcn_exists(string $fqcn) : bool
{
    return null !== fqcnType($fqcn);
}