Пример. Предполагается, что метод возвращает экземпляр 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 » полезным.)