instanceof օպերատորը և ժառանգությունը OOP-ում PHP-ում
Եկեք բացահայտենք ժառանգության առանձնահատկությունները՝ օգտագործելով
instanceof օպերատորը: Ենթադրենք, մենք ունենք ծնողական դաս
և ժառանգ դաս.
<?php
// Ծնողական դաս.
class ParentClass
{
}
// Ժառանգ դաս.
class ChildClass extends ParentClass
{
}
?>
Ստեղծենք ժառանգ դասի օբյեկտ.
<?php
$obj = new ChildClass;
?>
Այժմ ստուգենք instanceof-ի օգնությամբ,
արդյոք մեր օբյեկտը պատկանում է ParentClass
դասին և ChildClass դասին.
<?php
var_dump($obj instanceof ChildClass); // կարտածի true
var_dump($obj instanceof ParentClass); // նույնպես կարտածի true
?>
Ինչպես տեսնում եք օրինակից - instanceof օպերատորը
չի տարբերակում ստուգման ժամանակ ծնողական
և ժառանգ դասերի միջև:
Մի շփոթվեք - եթե օբյեկտը իսկապես լինի
ծնողական դասի, ապա, իհարկե, պատկանելիության ստուգումը
ժառանգ դասին կվերադարձնի
false.
<?php
$obj = new ParentClass; // ծնողական դասի օբյեկտ
var_dump($obj instanceof ParentClass); // կարտածի true
var_dump($obj instanceof ChildClass); // կարտածի false
?>
Ստեղծեք User դասը՝ պուբլիկ հատկություններով
name և surname:
Ստեղծեք Employee դասը, որն
կժառանգի User դասից և կավելացնի
salary հատկությունը:
Ստեղծեք City դասը՝ պուբլիկ հատկություններով
name և population:
Ստեղծեք 3 օբյեկտ User դասից,
3 օբյեկտ Employee դասից,
3 օբյեկտ City դասից և
կամայական հերթականությամբ գրեք դրանք
$arr զանգվածի մեջ:
Ցիկլով անցեք $arr զանգվածի վրայով և արտածեք
էկրանին name հատկությունների սյունակը այն
օբյեկտների, որոնք պատկանում են User դասին
կամ այդ դասի ժառանգին:
Ցիկլով անցեք $arr զանգվածի վրայով և արտածեք
էկրանին name հատկությունների սյունակը այն
օբյեկտների, որոնք չեն պատկանում User դասին
կամ այդ դասի ժառանգին:
Ցիկլով անցեք $arr զանգվածի վրայով և արտածեք
էկրանին name հատկությունների սյունակը այն
օբյեկտների, որոնք պատկանում են հենց
User դասին, այսինքն ոչ City
դասին և ոչ էլ Employee դասին: