Скажем, у меня есть это:Как проверить, принадлежит ли экземпляр класса к одному из родительских классов, которые находятся на одном уровне?
class Bird{}
class PrettyBird extends Bird{}
class UglyBird extends Bird{}
class Duckling extends UglyBird{}
и я делаю это:
$bird = new Duckling();
ИЛИ
$bird = new UglyBird();
Предположим, что в моей вселенной все, что я заинтересован в это, если класс принадлежит UglyBird
или PrettyBird
. В случае выше, я хочу проверить, принадлежит ли $bird
классу UglyBird
(super) в обоих случаях выше.
Как?
В настоящее время я могу сделать это
if (get_class($bird) === UglyBird::class
or get_class($bird) === Duckling::class)
print "MATCH!";
но это непрактично. Например, что, если я создаю новый класс, который расширяет UglyBird
. Мне придется добавить этот класс в оператор if
.
я хотел бы надеяться, что при написании этого вы должны знать, и не нужно, чтобы обнаружить его с помощью кода. –
Вы попробовали 'instanceof? –