我试图确定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;
}
答案 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);
}