การอ่านคุณสมบัติที่ไม่มีการประกาศใน OOP ใน PHP
ในตัวอย่างที่นำเสนอในบทเรียนที่ผ่านมา เราใช้คุณสมบัติเวทมนตร์ของเมธอด
__get เพื่อดักจับการเข้าถึง
คุณสมบัติแบบ private ในความเป็นจริงเมธอดนี้
ยังมีประโยชน์สำหรับการดักจับ
การเข้าถึงคุณสมบัติที่ไม่ได้ประกาศไว้ด้วย
มาดูตัวอย่างการใช้งานกัน สมมติว่า
เรามีคลาส User ที่มีชื่อและ
นามสกุล ซึ่งเป็นคุณสมบัติแบบ public
<?php
class User
{
public $surn;
public $name;
}
?>
ลองทำให้วัตถุของคลาส
มีพฤติกรรมเหมือนกับว่ามันมีคุณสมบัติ
full ซึ่งจะคืนค่าชื่อและนามสกุลของผู้ใช้
มาใช้เมธอดเวทมนตร์
__get ของเราสำหรับการนี้:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
มาทดสอบกัน:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // จะแสดง 'john smit'
?>
สร้างคลาส Date ด้วยคุณสมบัติแบบ public
year, month และ day
ใช้คุณสมบัติเวทมนตร์สร้างคุณสมบัติ weekDay
ซึ่งจะคืนค่าวันในสัปดาห์ที่สอดคล้องกับ
วันที่นั้น