Запіс на курсы па HTML, CSS, JavaScript, PHP, Python, фрэймворкам і CMS,
а таксама: дапамога ў пошуку працы і заказаў, стажыроўка на рэальных праектах→
⊗ppOpIhOI 36 of 107 menu

Аператар 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.

byenru