PHP'de instanceof Operatörü ve OOP'de Kalıtım

instanceof operatörünü kullanırken kalıtımın özelliklerini inceleyelim. Bir ana sınıfımız ve bir alt sınıfımız olsun:

index.php<?php
  // Ana sınıf:
  class ParentClass
  {
    
  }
  
  // Alt sınıf:
  class ChildClass extends ParentClass
  {
    
  }
?>

Alt sınıfın bir nesnesini oluşturalım:

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

Şimdi instanceof kullanarak nesnemizin ParentClass sınıfına ve ChildClass sınıfına ait olup olmadığını kontrol edelim:

index.php<?php
  var_dump($obj instanceof ChildClass);  // true yazdırır
  var_dump($obj instanceof ParentClass); // yine true yazdırır
?>

Örnekte gördüğünüz gibi - instanceof operatörü kontrol yaparken ana ve alt sınıflar arasında ayrım yapmaz.

Kafanız karışmasın - eğer nesne gerçekten ana sınıfa aitse, elbette alt sınıfa ait olup olmadığının kontrolü false döndürecektir:

php<?php
  $obj = new ParentClass; // ana sınıfın nesnesi
  
  var_dump($obj instanceof ParentClass); // true yazdırır
  var_dump($obj instanceof ChildClass);  // false yazdırır
?>
Задание 1

User sınıfını oluşturun, genel (public) özellikleri name ve surname olsun.

Задание 2

User sınıfından kalıtım alan ve salary özelliği ekleyen Employee sınıfını yapın.

Задание 3

Genel özellikleri name ve population olan City sınıfını yapın.

Задание 4

User sınıfından 3 nesne, Employee sınıfından 3 nesne, City sınıfından 3 nesne oluşturun ve rastgele bir sırayla $arr dizisine yazın.

Задание 5

$arr dizisini bir döngüyle gezin ve User sınıfına veya bu sınıfın alt sınıflarına ait olan nesnelerin name özelliklerini ekrana sütun olarak yazdırın.

Задание 6

$arr dizisini bir döngüyle gezin ve User sınıfına veya bu sınıfın alt sınıflarına ait *olmayan* nesnelerin name özelliklerini ekrana sütun olarak yazdırın.

Задание 7

$arr dizisini bir döngüyle gezin ve tam olarak User sınıfına ait olan, yani City sınıfına veya Employee sınıfına ait *olmayan* nesnelerin name özelliklerini ekrana sütun olarak yazdırın.