|
Оператор проверки типаОператор instanceof используется для определения того, является ли текущий объект экземпляром указанного класса. Пример #1 Использование instanceof с классами
<?php Результат выполнения данного примера: bool(true) bool(false) Оператор instanceof также может быть использован для определения, наследует ли определенный объект какому-либо классу: Пример #2 Использование instanceof с наследуемыми классами
<?php Результат выполнения данного примера: bool(true) bool(true) Для проверки непринадлежности объекта некоторому классу, используйте логический оператор not. Пример #3 Использование instanceof для проверки того, что объект не является экземпляром класса
<?php Результат выполнения данного примера: bool(true) Ну и наконец, instanceof может быть также использован для проверки реализации объектом некоторого интерфейса: Пример #4 Использование instanceof для класса
<?php Результат выполнения данного примера: bool(true) bool(true) Хотя instanceof обычно используется с прямо указанным именем класса, он также может быть использован с другим объектом или строковой переменной: Пример #5 Использование instanceof с другими переменными
<?php Результат выполнения данного примера: bool(true) bool(true) bool(false) Есть несколько подводных камней, которых следует остерегаться. До версии PHP 5.1.0, instanceof вызывал __autoload() если имя класса не существовало. Вдобавок, если класс не был загружен, происходила фатальная ошибка. Это можно было обойти с помощью динамической ссылки на класс или использования строковой переменной с именем класса: Пример #6 Избежание поиска класса и фатальных ошибок с instanceof в PHP 5.0
<?php Результат выполнения данного примера: bool(false) Оператор instanceof был добавлен в PHP 5. До этого времени использовалась функция is_a(), но позже is_a() была помечена устаревшей в пользу instanceof. Учтите, что с версии PHP 5.3.0, is_a() больше не является устаревшей. Ознакомьтесь также с описанием функций get_class() и is_a(). |
|