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:
<?php
// Kelas induk:
class ParentClass
{
}
// Kelas turunan:
class ChildClass extends ParentClass
{
}
?>
Mari buat objek dari kelas turunan:
<?php
$obj = new ChildClass;
?>
Sekarang mari kita periksa dengan instanceof,
apakah objek kita termasuk dalam kelas ParentClass
dan kelas ChildClass:
<?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
$obj = new ParentClass; // objek dari kelas induk
var_dump($obj instanceof ParentClass); // akan menampilkan true
var_dump($obj instanceof ChildClass); // akan menampilkan false
?>
Buatlah kelas User dengan properti publik
name dan surname.
Buatlah kelas Employee, yang
mewarisi dari kelas User dan menambahkan
properti salary.
Buatlah kelas City dengan properti publik
name dan population.
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.
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.
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.
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.