Пример. Предполагается, что метод возвращает экземпляр SpecificClass. Как я могу проверить это возвращаемое значение, если оно принадлежит этому классу?
Можно ли проверить, является ли объект видом определенного класса, в PHP?
Ответ 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
- см. строку, в которой он был создан.
Ответ 2
Вы можете использовать оператор instanceof
или is_a.
is_a
полезен, если вы хотите передать строку с именем класса (в более динамичной кодовой базе).
Ответ 3
if ($object instanceof classname)
....
Ответ 4
Вы не можете проверить возвращаемое значение, но вы можете проверить класс, который он вернул, используя instanceof '. (На аналогичной основе вы можете найти " get_class" полезно.)