Operator instanceof dan Pewarisan dalam OOP di PHP

Mari kita bahas karakteristik pewarisan saat menggunakan operator instanceof. Misalkan kita memiliki kelas induk dan kelas turunan:

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

Mari buat objek dari kelas turunan:

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

Sekarang mari kita periksa dengan instanceof, apakah objek kita termasuk dalam kelas ParentClass dan kelas ChildClass:

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

Seperti yang Anda lihat dari contoh - operator instanceof tidak membedakan antara kelas induk dan kelas turunan saat pemeriksaan.

Jangan bingung - jika objek benar-benar dari kelas induk maka, tentu saja, pemeriksaan terhadap kepemilikan kelas turunan akan mengembalikan false:

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

Buatlah kelas User dengan properti publik name dan surname.

Задание 2

Buatlah kelas Employee, yang mewarisi dari kelas User dan menambahkan properti salary.

Задание 3

Buatlah kelas City dengan properti publik name dan population.

Задание 4

Buatlah 3 objek dari kelas User, 3 objek dari kelas Employee, 3 objek dari kelas City, dan dengan urutan sembarangan tuliskan mereka ke dalam array $arr.

Задание 5

Ulangi array $arr dengan loop dan tampilkan di layar kolom properti name dari objek-objek yang termasuk dalam kelas User atau turunan dari kelas ini.

Задание 6

Ulangi array $arr dengan loop dan tampilkan di layar kolom properti name dari objek-objek yang tidak termasuk dalam kelas User atau turunan dari kelas ini.

Задание 7

Ulangi array $arr dengan loop dan tampilkan di layar kolom properti name dari objek-objek yang termasuk tepat dalam kelas User, yaitu bukan kelas City dan bukan kelas Employee.