Ответ 1
Вы можете использовать оператор instanceof
, чтобы проверить, является ли объект экземпляром:
- Класс
- Или дочерний класс этого класса
- Или экземпляр класса, реализующего интерфейс
Это означает, что он не может быть использован для определения того, является ли ваш объект экземпляром класса specific
, поскольку он скажет "да", если ваш объект является экземпляром дочернего класса этого класса.
Например, эта часть кода:
class ClassA {}
class ClassB extends ClassA {}
$a = new ClassB();
if ($a instanceof ClassA) {
echo '$a is an instanceof ClassA<br />';
}
if ($a instanceof ClassB) {
echo '$a is an instanceof ClassB<br />';
}
Вы получите этот результат:
$a is an instanceof ClassA
$a is an instanceof ClassB
$a
, в некотором смысле, является экземпляром ClassA
, поскольку ClassB
является дочерним классом ClassA
.
И, конечно, $a
также является экземпляром ClassB
- см. строку, в которой он был создан.