PHP OOP에서 존재하지 않는 속성 읽기

이전 강의에서 제시된 예시에서 우리는 비공개 속성에 대한 접근을 포착하기 위해 __get 매직 메서드를 사용했습니다. 사실 이 메서드는 존재하지 않는 속성에 대한 접근을 포착하는 데에도 유용할 수 있습니다.

실용적인 예를 살펴보겠습니다. 성과 이름이 공개 속성인 User 클래스가 있다고 가정해 보겠습니다:

User.php<?php
  class User
  {
    public $surn;
    public $name;
  }
?>

이제 이 클래스의 객체가 사용자의 성과 이름을 출력하는 full 속성도 가지고 있는 것처럼 동작하도록 만들어 보겠습니다. 이를 위해 매직 메서드 __get를 사용하겠습니다:

User.php<?php
  class User
  {
    public $surname;
    public $name;
    public $patronymic;
    
    public function __get($property)
    {
      if ($property == 'full') {
        return $this->surn . ' ' . $this->name;
      }
    }
  }
?>

테스트해 봅시다:

index.php<?php
  $user = new User;
  
  $user->surn = 'john';
  $user->name = 'smit';
  
  echo $user->full; // 'john smit'를 출력합니다
?>
Задание 1

공개 속성 year, month 및 day를 가진 Date 클래스를 만드세요. 매직을 사용하여 날짜에 해당하는 요일을 반환하는 weekDay 속성을 구현하세요.