PHP에서의 instanceof 연산자와 OOP 상속

instanceof 연산자를 사용할 때의 상속 특징에 대해 알아보겠습니다. 부모 클래스와 자식 클래스가 있다고 가정해 봅시다:

index.php<?php
  // 부모 클래스:
  class ParentClass
  {
    
  }
  
  // 자식 클래스:
  class ChildClass extends ParentClass
  {
    
  }
?>

자식 클래스의 객체를 생성해 보겠습니다:

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

이제 instanceof를 사용하여 우리의 객체가 ParentClass 클래스와 ChildClass 클래스에 속하는지 확인해 보겠습니다:

index.php<?php
  var_dump($obj instanceof ChildClass);  // true 출력
  var_dump($obj instanceof ParentClass); // 또한 true 출력
?>

예제에서 보시다시피 - instanceof 연산자는 부모 클래스와 자식 클래스를 확인할 때 차이를 두지 않습니다.

혼동하지 마세요 - 객체가 실제로 부모 클래스의 것이라면, 당연히 자식 클래스에 속하는지 확인하는 것은 false를 반환할 것입니다:

php<?php
  $obj = new ParentClass; // 부모 클래스의 객체
  
  var_dump($obj instanceof ParentClass); // true 출력
  var_dump($obj instanceof ChildClass);  // false 출력
?>
Задание 1

공개 속성 name과 surname을 가진 User 클래스를 만드세요.

Задание 2

User 클래스를 상속받고 salary 속성을 추가하는 Employee 클래스를 만드세요.

Задание 3

공개 속성 name과 population을 가진 City 클래스를 만드세요.

Задание 4

User 클래스의 객체 3개, Employee 클래스의 객체 3개, City 클래스의 객체 3개를 생성하고, 임의의 순서로 $arr 배열에 기록하세요.

Задание 5

$arr 배열을 반복문으로 순회하고 User 클래스 또는 이 클래스의 하위 클래스에 속하는 객체들의 name 속성을 화면에 열로 출력하세요.

Задание 6

$arr 배열을 반복문으로 순회하고 User 클래스 또는 이 클래스의 하위 클래스에 속하지 않는 객체들의 name 속성을 화면에 열로 출력하세요.

Задание 7

$arr 배열을 반복문으로 순회하고 정확히 User 클래스에 속하는, 즉 City 클래스나 Employee 클래스가 아닌 객체들의 name 속성을 화면에 열로 출력하세요.