Оператори 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 созед.
Синфи Employee-ро созед, ки
аз синфи User мерос мегирад ва хосияти
salary-ро илова мекунад.
Синфи City-ро бо хосиятҳои ҷамъиятии
name ва population созед.
3 объекти синфи User,
3 объекти синфи Employee,
3 объекти синфи City эҷод кунед, ва ба
тартиби ихтиёрӣ онҳоро дар массив
$arr сабт кунед.
Массиви $arr-ро бо сикли гузаред ва
дар экран сутуни хосиятҳои name-и он
объектҳоро, ки ба синфи User
ё наслҳои ин синф тааллуқ доранд, чоп кунед.
Массиви $arr-ро бо сикли гузаред ва
дар экран сутуни хосиятҳои name-и он
объектҳоро, ки ба синфи User
ё наслҳои ин синф тааллуқ надоранд, чоп кунед.
Массиви $arr-ро бо сикли гузаред ва
дар экран сутуни хосиятҳои name-и он
объектҳоро, ки аниқан ба синфи
User тааллуқ доранд, яъне ба синфи City
ва на синфи Employee тааллуқ надоранд, чоп кунед.