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プロパティを作成してください。