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

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

Вы можете использовать оператор 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 – см. ClassB в которой он был создан.

Вы можете использовать оператор instanceof или функцию is_a .

is_a полезно, если вы хотите передать строку с именем класса (в более динамичной кодовой базе).

 if ($object instanceof classname) .... 

Руководство: Классы и объекты в PHP5

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