PHP-dä OOP-dä instanceof operator we miras almagyň ulanylyşy
instanceof operator ulanylanda miras almagyň aýratynlyklaryny düşüneli. Bizde ata klas we çaga klas bar:
<?php
// Ata klas:
class ParentClass
{
}
// Çaga klas:
class ChildClass extends ParentClass
{
}
?>
Çaga klasynyň obýektini döredeli:
<?php
$obj = new ChildClass;
?>
Indi instanceof kömegi bilen, obýektimiziň ParentClass klasyna we ChildClass klasyna degişlidigini barlalyň:
<?php
var_dump($obj instanceof ChildClass); // true çykarar
var_dump($obj instanceof ParentClass); // ýene-de true çykarar
?>
Mysaldan görşüňiz ýaly - instanceof operator barlag wagtynda ata we çaga klaslarynyň arasynda tapawut ýokar.
Çyşyňyz - eger obýekt hakykatdanam ata klasyň bolsa, şübesiz, çaga klasyň degişlidigini barlamak false gaytarar:
<?php
$obj = new ParentClass; // ata klasyň obýekti
var_dump($obj instanceof ParentClass); // true çykarar
var_dump($obj instanceof ChildClass); // false çykarar
?>
User klasyny ýasaň, onuň ady we familiýasy bolan public aýratynlyklary bolsun.
Employee klasyny ýasaň, ol User klasyndan miras alsyn we goşmaça salary aýratynlygyny goşsun.
City klasyny ýasaň, onuň ady we ilat sany bolan public aýratynlyklary bolsun.
3 sany User klasyndan obýekt, 3 sany Employee klasyndan obýekt, 3 sany City klasyndan obýekt dörediň we olary erkin tertipde $arr massiwine ýazyň.
$arr massiwini aýlaw bilen gezip, ekrana User klasyna ýa-da oňa degişli çaga klasyna degişli bolan obýektleriň name aýratynlygynyň sütünini çykaryň.
$arr massiwini aýlaw bilen gezip, ekrana User klasyna ýa-da oňa degişli çaga klasyna degişli bolmadyk obýektleriň name aýratynlygynyň sütünini çykaryň.
$arr massiwini aýlaw bilen gezip, ekrana dogrudan-da User klasyna degişli bolan, ýagny City klasyna we Employee klasyna degişli bolmadyk obýektleriň name aýratynlygynyň sütünini çykaryň.