PHP instanceof - 仅为子项返回TRUE

时间:2014-08-25 14:31:21

标签: php

我有两个班,A和B. B扩展了A类。

如果我在instance of A的实例上执行B,则会返回TRUE

如何避免这种情况?

4 个答案:

答案 0 :(得分:5)

instanceof的工作原理正确如此:如果B继承自A,则它也是A类。

但是,您可以使用get_class()来确认精确的课程:

if (get_class($b_instance) == 'A') {
    // Not true
}

答案 1 :(得分:1)

您需要通过get_class函数检查类

if( get_class($Binst) == 'A' ) {
}

答案 2 :(得分:1)

您可能想知道对象的类名。

尝试使用get_class($Object)

示例:

$ objA = new A(); $ objB = new B();

get_class($objA) 将返回" A"。

get_class($objB) 将返回" B"。

然后,如果你使用

if (get_class($objB) == "A") { echo "Its a A"; }

答案 3 :(得分:1)

使用is_subclass_of()功能:is_subclass_of($b, 'A')