如果字符串包含类似于$fqcn的fqcn,则可以进行静态检查(即不创建实例):

function checkCreatingInstance($fqcn)
{
    // Create a new instance
    $instance = new $fqcn;

    return ($instance instanceof 'MyNamespace\Entity\SendMessage');
}

function checkStatically($fqcn)
{
    /* TODO */
}

$fqcn = 'MyNamespace\Entity\SendSmallTextMessage';
var_dump(checkCreatingInstance($fqcn)); // true

是给定类型的吗?层次结构示例:
namespace MyNamespace\Entity;

class SendMessage { /* Stuff */ }

namespace MyNamespace\Entity;

class SendNewsletter extends SendMessage { /* Stuff */ }

namespace MyNamespace\Entity;

class SendSmallTextMessage extends SendMessage { /* Stuff */ }

最佳答案

对。is_a()将执行此操作,如果您将TRUE作为第三个参数传递。
Example
这样做的好处是,你可以编写函数,使它接受和对象或字符串,它将以任何方式工作,你不必有两个函数来进行静态和实例化检查:

function checkIsChildOf ($objOrFQCN, $parent)
{
    return is_a($objOrFQCN, $parent, TRUE);
}

然而PHP手册的另一个例子很差——这一行为在手册中被记录下来,据我所知,但我不知道为什么你没有看到它,所以手册只是很差,不能使它可见。

09-25 16:50