【发布时间】:2014-10-18 17:47:53
【问题描述】:
我有两个类,A 和 B。B 扩展了 A 类。
如果我对B 的实例执行instance of A,它会返回TRUE。
如何避免这种情况?
【问题讨论】:
-
这正是它应该如何工作的。否则使用“instanceOf B”。
标签: php
我有两个类,A 和 B。B 扩展了 A 类。
如果我对B 的实例执行instance of A,它会返回TRUE。
如何避免这种情况?
【问题讨论】:
标签: php
instanceof 是这样工作的,而且是正确的:如果 B 继承自 A,那么它也是 A 类型。
但是,您可以改用get_class() 来检查精确的类:
if (get_class($b_instance) == 'A') {
// Not true
}
【讨论】:
你需要通过get_class函数来查看类
if( get_class($Binst) == 'A' ) {
}
【讨论】:
您可能想知道对象的类名。
尝试使用get_class($Object)。
例子:
$objA = 新 A(); $objB = 新 B();
get_class($objA)
将返回“A”。
和
get_class($objB)
将返回“B”。
那么如果你使用
if (get_class($objB) == "A") { echo "Its a A"; }
【讨论】:
使用is_subclass_of()函数:is_subclass_of($b, 'A')
【讨论】: