instanceof оператори ва 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 хоссалари билан.
User синфидан мерос олувчи Employee синфини яратинг ва унга salary хоссасини қўшинг.
Умумхол қилинган name ва population хоссалари билан City синфини яратинг.
User синфидан 3 та объект, Employee синфидан 3 та объект, City синфидан 3 та объект яратинг ва уларни тасодифий тартибда $arr массивига киритинг.
$arr массивини цикл ёрдамида айлантириб чикинг ва User синфига ёки ушбу синфнинг авлодига тегишли бўлган объектларнинг name хоссаларини экранга ustun шаклида чикаринг.
$arr массивини цикл ёрдамида айлантириб чикинг ва User синфига ёки ушбу синфнинг авлодига тегишли бўлмаган объектларнинг name хоссаларини экранга ustun шаклида чикаринг.
$arr массивини цикл ёрдамида айлантириб чикинг ва айнан User синфига тегишли бўлган, яъни City синфига ва Employee синфига тегишли бўлмаган объектларнинг name хоссаларини экранга ustun шаклида чикаринг.