Переход к PHP5 Страница 14. instanceof оператор
|
Страница 14 из 20 instanceof оператор Новый опреатор "проверяемый объект instanceof проверяемый класс" позволяет проверить, попадает ли проверяемый класс в список дерева наследования класса, экземпляром которого является проверяемый объект. На примере это выглядит так: interface Editable { function startEdit(); function endEdit(); } class Control { function getValue() { //... } } class EditableControl extends Control implements Editable { function startEdit() { //... } function endEdit() { //... } } $c = new Control(); $ec = new EditableControl(); print '$c instanceof Editable = ' . ($c instanceof Editable ? 'true' : 'false') . ' '; print '$c instanceof Control = ' . ($c instanceof Control ? 'true' : 'false') . ' '; print '$c instanceof EditableControl = ' . ($c instanceof EditableControl ? 'true' : 'false') . ' '; print '$ec instanceof Editable = ' . ($ec instanceof Editable ? 'true' : 'false') . ' '; print '$ec instanceof Control = ' . ($ec instanceof Control ? 'true' : 'false') . ' '; print '$ec instanceof EditableControl = ' . ($ec instanceof EditableControl ? 'true' : 'false'); Результатом работы этого кода будет: $c instanceof Editable = false $c instanceof Control = true $c instanceof EditableControl = false $ec instanceof Editable = true $ec instanceof Control = true $ec instanceof EditableControl = true Таким образом, для $c instanceof возвращает true только для класса Control, для $ec instanceof вернет true только для Editable, Control, EditableControl. Для null всегда возращается false. |