gpt4 book ai didi

php - Instanceof 和命名空间

转载 作者:行者123 更新时间:2023-12-03 00:56:05 26 4
gpt4 key购买 nike

我在尝试使用以下内容时遇到意外行为:

$object instanceof $class

1/PHP 'instanceof' 关键字和命名空间可以很好地协同工作,如所解释的 in the official doc.

2/然而,有时,反斜杠转义会导致更微妙(晦涩?)的行为,正如 Ben 在 this 中善意地解释的那样。好帖子。

在我的代码深处,您设置了几个转储,如下所示:

var_dump($object, $class);
var_dump($object instanceof $class);

运行脚本时会给出以下输出:

class Tools\Tests\Entity\testObject#226 (2) {
private $var_one =>
NULL
private $var_two =>
NULL
}
string(36) "Tools\Tests\Entity\testObject"
bool(false)

我的第一个转储的类与第二个转储中的字符串严格相同。但是,我的 instanceof dump 返回 FALSE。为什么?

我玩过反斜杠,但没有运气。也许我在命名空间的某个地方搞砸了?问题是我真的不知道如何进一步排除故障。我应该尝试什么?

最佳答案

您可以使用命名空间测试实例,但使用 fully qualified class name .

对于您的测试,我会这样做:

$class = "\\Tools\\Tests\\Entity\\testObject";
$object = new $class;
var_dump($object instanceof $class); //bool(true)
<小时/>

您还可以使用单引号来测试这种方式,而不必担心转义反斜杠并节省一些击键次数。

$class = '\Tools\Tests\Entity\testObject';
$object = new $class;
var_dump($object instanceof $class); //bool(true)

关于php - Instanceof 和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23807992/

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