我有两个班,A和B. B扩展了A类。
如果我在instance of A
的实例上执行B
,则会返回TRUE
。
如何避免这种情况?
答案 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')