Подтвердить что ты не робот

Можно ли проверить, является ли объект видом определенного класса, в PHP?

Пример. Предполагается, что метод возвращает экземпляр SpecificClass. Как я могу проверить это возвращаемое значение, если оно принадлежит этому классу?

4b9b3361

Ответ 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 полезен, если вы хотите передать строку с именем класса (в более динамичной кодовой базе).

Ответ 4

Вы не можете проверить возвращаемое значение, но вы можете проверить класс, который он вернул, используя instanceof '. (На аналогичной основе вы можете найти " get_class" полезно.)