gpt4 book ai didi

php - 是否可以通过 "statically"检查 FQCN 是否属于 PHP 中的给定类型?

转载 作者:可可西里 更新时间:2023-11-01 00:49:19 25 4
gpt4 key购买 nike

如果字符串包含像 $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 手册的另一个例子是糟糕的——这种行为在手册中有记录,据我所知,但我不知道为什么你没有看到它,所以手册很糟糕,没有做到可见。

关于php - 是否可以通过 "statically"检查 FQCN 是否属于 PHP 中的给定类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10912190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com