Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'redirect_login_page' not found or invalid function name in /var/www/yur88222767/data/www/1st-network.ru/wp-includes/class-wp-hook.php on line 308
Ключевое слово instanceof - В сети

Ключевое слово instanceof


У нас часто класс наследует один класс, а тот в свою очередь наследует другой класс и интерфейс, и т.д. Нам надо узнать является ли данный конкретный объект наследником какого-то класса или интерфейса. Т.е. в цепочке предков у него есть тот или иной класс, или нет.

Для этого в PHP5 появилось ключевое слово instanceof.

Пример:

[php]
class Human {}
$myBoss = new Human();
if($myBoss instanceOf Human)
print('Мой Босс – человек!');
[/php]

Т.е. у нас есть класс Human. Создаем экземпляр этого класса. Далее проверка if. Далее — наследуем класс Human:

[php]
class Woman extends Human {}
$englishQueen = new Woman();
if($englishQueen instanceOf Human)
print('Английская королева – тоже человек!');
[/php]

Такая же ситуация и с интерфейсом:

[php]
interface LotsOfMoney {}
class ReachPeople implements LotsOfMoney {}
$billGates = new ReachPeople();
if($billGates instanceOf LotsOfMoney)
print('У Билла Гейтса много денег!');
[/php]

Здесь класс наследует интерфейс. Получаем, что объект $billGates зависит от нашего интерфейса.

Немного истории instanceof

Конструкция instanceof появилась в PHP5. До этого использовалась функция is_a (). Эта функция существует и сейчас. Но в PHP5 разработчики рекомендуют использовать instanceof. Они объявили is_a () — функцией deprecated, т.е. нежелательной (возможно в будущем удаленной из php). Но поскольку у многих в коде стояла функция is_a (), то начиная с версии PHP5.3 с этой функции убрали признак deprecated. Т.е. сейчас можно использовать обе функции.


Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Для отправки комментария, поставьте отметку, что разрешаете сбор и обработку ваших персональных данных . Политика конфиденциальности