Переход к 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.