เวลาเราสร้างคลาส (Class) ใน PHP เราจะต้องกำหนดว่าแต่ละตัวแปร (Property) และฟังก์ชัน (Method) จะให้ใช้งานได้จากที่ไหน ซึ่งนี่แหละที่เรียกว่า Visibility หรือ ระดับการเข้าถึง นั่นเอง
Visibility มีอะไรบ้าง?
ใน PHP มี 3 ระดับหลัก ๆ ได้แก่:
- public (สาธารณะ) – ใช้ได้จากทุกที่ ไม่ว่าจะเป็นภายในคลาสเอง นอกคลาส หรือแม้แต่วัตถุที่ถูกสร้างขึ้น
- protected (ป้องกัน) – ใช้ได้ภายในคลาสเอง และคลาสลูกที่สืบทอด (extends) เท่านั้น
- private (ส่วนตัว) – ใช้ได้แค่ภายในคลาสนั้นเท่านั้น คลาสลูกก็แตะต้องไม่ได้
ตัวอย่างการใช้งานแบบง่าย ๆ
มาลองดูโค้ดตัวอย่างกันว่า Visibility ส่งผลยังไง
<?php
class Car {
public $brand; // ทุกคนเข้าถึงได้
protected $engine; // ใช้ได้เฉพาะในคลาสนี้และคลาสลูก
private $owner; // ใช้ได้แค่ในคลาสนี้เท่านั้น
public function __construct($brand, $engine, $owner) {
$this->brand = $brand;
$this->engine = $engine;
$this->owner = $owner;
}
public function showCarInfo() {
echo "ยี่ห้อ: $this->brand, เครื่องยนต์: $this->engine, เจ้าของ: $this->owner";
}
}
class SportsCar extends Car {
public function showEngine() {
echo "เครื่องยนต์: $this->engine"; // ใช้ได้เพราะเป็น protected
}
}
$myCar = new Car("Toyota", "V8", "สมชาย");
echo $myCar->brand; // ใช้ได้ เพราะเป็น public
$myCar->showCarInfo(); // ใช้ได้ เพราะเป็น public
// echo $myCar->engine; // ใช้ไม่ได้ เพราะเป็น protected
// echo $myCar->owner; // ใช้ไม่ได้ เพราะเป็น private
?>
อธิบายให้เข้าใจง่าย ๆ
- ตัวแปร brand เป็น public ใครก็เรียกใช้ได้เลย
- ตัวแปร engine เป็น protected ใช้ได้แค่ในคลาส Car และคลาสที่สืบทอดจากมัน
- ตัวแปร owner เป็น private ใช้ได้แค่ภายใน Car เท่านั้น แม้แต่คลาสลูกก็แตะต้องไม่ได้
สรุปสั้น ๆ
- ใช้ public ถ้าต้องการให้ทุกคนเข้าถึงได้
- ใช้ protected ถ้าต้องการให้เฉพาะคลาสตัวเองและคลาสลูกใช้ได้
- ใช้ private ถ้าต้องการปกปิดข้อมูลไว้ภายในคลาสตัวเองเท่านั้น
ถ้าคุณเข้าใจหลักการนี้ ก็จะช่วยให้คุณจัดการข้อมูลในคลาสได้ดีขึ้น ป้องกันการเปลี่ยนแปลงค่าที่ไม่พึงประสงค์ และทำให้โค้ดของคุณเป็นระเบียบมากขึ้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น