Переход к PHP5 - instanceof оператор

ОГЛАВЛЕНИЕ

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.