Operator instanceof dan Pewarisan dalam OOP dalam PHP

Mari kita kaji ciri-ciri pewarisan apabila menggunakan operator instanceof. Katakan kita mempunyai kelas induk dan kelas terbitan:

index.php<?php
  // Kelas induk:
  class ParentClass
  {
    
  }
  
  // Kelas terbitan:
  class ChildClass extends ParentClass
  {
    
  }
?>

Mari buat objek kelas terbitan:

index.php<?php
  $obj = new ChildClass;
?>

Sekarang mari kita semak dengan menggunakan instanceof, sama ada objek kita tergolong dalam kelas ParentClass dan kelas ChildClass:

index.php<?php
  var_dump($obj instanceof ChildClass);  // akan memaparkan true
  var_dump($obj instanceof ParentClass); // juga akan memaparkan true
?>

Seperti yang anda lihat dari contoh - operator instanceof tidak membezakan semasa pemeriksaan antara kelas induk dan kelas terbitan.

Jangan keliru - jika objek itu benar-benar daripada kelas induk, maka sudah tentu, semakan terhadap kepunyaan kelas terbitan akan mengembalikan false:

php<?php
  $obj = new ParentClass; // objek kelas induk
  
  var_dump($obj instanceof ParentClass); // akan memaparkan true
  var_dump($obj instanceof ChildClass);  // akan memaparkan false
?>
Задание 1

Buat kelas User dengan sifat awam name dan surname.

Задание 2

Buat kelas Employee, yang akan mewarisi daripada kelas User dan menambah sifat salary.

Задание 3

Buat kelas City dengan sifat awam name dan population.

Задание 4

Cipta 3 objek kelas User, 3 objek kelas Employee, 3 objek kelas City, dan dalam urutan sewenang-wenangnya masukkan mereka ke dalam array $arr.

Задание 5

Leluskan array $arr dengan gelung dan paparkan pada skrin lajur sifat name bagi objek-objek yang tergolong dalam kelas User atau keturunan kelas ini.

Задание 6

Leluskan array $arr dengan gelung dan paparkan pada skrin lajur sifat name bagi objek-objek yang *tidak* tergolong dalam kelas User atau keturunan kelas ini.

Задание 7

Leluskan array $arr dengan gelung dan paparkan pada skrin lajur sifat name bagi objek-objek yang tergolong *tepat* kepada kelas User, iaitu bukan kelas City dan bukan kelas Employee.