Этот вопрос уже имеет ответ здесь:
Пример: метод, как предполагается, возвращает экземпляр SpecificClass. Как я могу проверить, что возвращаемое значение, если это от того класса?
Вы можете использовать оператор instanceof
, чтобы проверить, является ли объект экземпляром :
Что означает, что он не может быть использован для определения, является ли ваш объект экземпляром специфического
класса -- так как он скажет "да", если ваш объект является экземпляром детского класса этого класса.
Например, эта часть кода :
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
-- см. строку, где он инстанцирован.
Можно использовать оператор instanceof
или функцию is_a.
is_a
полезно, если вы хотите передать в строке с именем класса (в более динамической кодовой базе).
Вы не можете проверить само возвращаемое значение, но вы можете проверить класс, из которого оно возвращается, используя 'instanceof'. (На аналогичной основе, вы можете найти 'get_class'' полезным.)
.