【发布时间】:2017-04-14 03:28:30
【问题描述】:
说我有这个:
class Bird{}
class PrettyBird extends Bird{}
class UglyBird extends Bird{}
class Duckling extends UglyBird{}
我这样做:
$bird = new Duckling();
或
$bird = new UglyBird();
假设在我的世界中,我感兴趣的只是类是否属于UglyBird 或PrettyBird。在上述情况下,我想在上述两种情况下测试$bird 是否属于UglyBird(超)类。
怎么做?
目前我可以做到这一点
if (get_class($bird) === UglyBird::class
or get_class($bird) === Duckling::class)
print "MATCH!";
但这是不切实际的。例如,如果我创建一个扩展 UglyBird 的新类会怎样。我必须将该类添加到if 语句中。
【问题讨论】:
-
我希望在写这篇文章的时候你会知道并且不需要通过代码来检测它。
-
你试过 `instanceof 吗?
标签: php oop inheritance interface extends