Я могу проверить, является ли объект своего рода определенным классом в PHP? [дубликат]

Этот вопрос уже имеет ответ здесь:

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

38
задан openfrog 27 December 2009 в 10:50
поделиться

4 ответа

Вы можете использовать оператор instanceof , чтобы проверить, является ли объект экземпляром :

  • A class
  • Или дочерний класс этого класса
  • Или экземпляр класса, который реализует интерфейс

Что означает, что он не может быть использован для определения, является ли ваш объект экземпляром специфического класса -- так как он скажет "да", если ваш объект является экземпляром детского класса этого класса.


Например, эта часть кода :

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 -- см. строку, где он инстанцирован.

.
65
ответ дан 27 November 2019 в 03:26
поделиться

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

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

.
8
ответ дан 27 November 2019 в 03:26
поделиться
4
ответ дан 27 November 2019 в 03:26
поделиться

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

.
4
ответ дан 27 November 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: