【问题标题】:PHP instanceof - return TRUE only for childrenPHP instanceof - 仅对孩子返回 TRUE
【发布时间】:2014-10-18 17:47:53
【问题描述】:

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

如果我对B 的实例执行instance of A,它会返回TRUE

如何避免这种情况?

【问题讨论】:

标签: php


【解决方案1】:

instanceof 是这样工作的,而且是正确的:如果 B 继承自 A,那么它也是 A 类型。

但是,您可以改用get_class() 来检查精确的类:

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

【讨论】:

    【解决方案2】:

    你需要通过get_class函数来查看类

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

    【讨论】:

      【解决方案3】:

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

      尝试使用get_class($Object)

      例子:

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

      get_class($objA) 将返回“A”。

      get_class($objB) 将返回“B”。

      那么如果你使用

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

      【讨论】:

        【解决方案4】:

        使用is_subclass_of()函数:is_subclass_of($b, 'A')

        【讨论】:

          猜你喜欢
          • 2015-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-12
          • 1970-01-01
          相关资源
          最近更新 更多