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:
<?php
// Kelas induk:
class ParentClass
{
}
// Kelas terbitan:
class ChildClass extends ParentClass
{
}
?>
Mari buat objek kelas terbitan:
<?php
$obj = new ChildClass;
?>
Sekarang mari kita semak dengan menggunakan instanceof,
sama ada objek kita tergolong dalam kelas ParentClass
dan kelas ChildClass:
<?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
$obj = new ParentClass; // objek kelas induk
var_dump($obj instanceof ParentClass); // akan memaparkan true
var_dump($obj instanceof ChildClass); // akan memaparkan false
?>
Buat kelas User dengan sifat awam
name dan surname.
Buat kelas Employee, yang akan
mewarisi daripada kelas User dan menambah
sifat salary.
Buat kelas City dengan sifat awam
name dan population.
Cipta 3 objek kelas User,
3 objek kelas Employee,
3 objek kelas City, dan
dalam urutan sewenang-wenangnya masukkan mereka ke dalam array
$arr.
Leluskan array $arr dengan gelung dan paparkan
pada skrin lajur sifat name bagi
objek-objek yang tergolong dalam kelas User
atau keturunan kelas ini.
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.
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.