การอ่านคุณสมบัติที่ไม่มีการประกาศใน OOP ใน PHP

ในตัวอย่างที่นำเสนอในบทเรียนที่ผ่านมา เราใช้คุณสมบัติเวทมนตร์ของเมธอด __get เพื่อดักจับการเข้าถึง คุณสมบัติแบบ private ในความเป็นจริงเมธอดนี้ ยังมีประโยชน์สำหรับการดักจับ การเข้าถึงคุณสมบัติที่ไม่ได้ประกาศไว้ด้วย

มาดูตัวอย่างการใช้งานกัน สมมติว่า เรามีคลาส User ที่มีชื่อและ นามสกุล ซึ่งเป็นคุณสมบัติแบบ public

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

สร้างคลาส Date ด้วยคุณสมบัติแบบ public year, month และ day ใช้คุณสมบัติเวทมนตร์สร้างคุณสมบัติ weekDay ซึ่งจะคืนค่าวันในสัปดาห์ที่สอดคล้องกับ วันที่นั้น