public จะเข้าถึงได้ทุกที่ทั้งจากภายใน Class และจากภายนอก Class
private จะเข้าถึงได้เฉพาะภายใน Class นี้เท่านั้น
protected จะเข้าถึงได้เฉพาะภายใน Class นี้ และภายใน Subclass ที่ extends หรือสืบทอดสมาชิกจาก Class นี้เท่านั้น
ตัวอย่างนะครับ
โค้ด: เลือกทั้งหมด
<?php
class Privacy
{
public function myPublic()
{
return "I am Public";
}
private function myPrivate()
{
return "I am Private";
}
protected function myProtected()
{
return "I am Protected";
}
function output(){
echo "".$this->myPublic()."<br/>";
echo "".$this->myPrivate()."<br/>";
echo "".$this->myProtected()."<br/>";
}
}
$output = new Privacy();
$output -> output();
?>
public,private,protected ตามโค้ดเลยนะครับ
ค่าที่จะได้ออกมาก็คือ ที่เเสดงค่าออกมาครบทุกค่าก็เพราะว่า Method ทุกอันอยู่ในคลาสของมันเอง ซึ่งไม่ว่าจะเป็นpublic,private หรือ protected จะมีคุณสมบัติในการเรียกใช้ในคลาสของตัวเองทุกอันเลยครับ
เเต่ถ้าลองเรียกใช้นอกคลาสดูล่ะ!
ผมจะทำการสร้างคลาสPrivacy 2 นะครับโดยทำการสืบทอดคลาส Privacy ตามโค้ดเลยครับ
โค้ด: เลือกทั้งหมด
class Privacy2 extends Privacy
{
function __construct()
{
echo "".$this->myPublic()."<br/>";
echo "".$this->myProtected()."<br/>";
echo "".$this->myPrivate()."<br/>";
}
}
จะเห็นได้ว่า ฟังก์ชั่นในส่วนของ private จะมีการ Error นะครับ เพราะว่า คำสั่ง private จะสามารถเข้าถึงได้เฉพาะภายใน Class ของตัวเองเท่านั้นนะครับ
เราสามารถกำหนดระดับการเข้าถึงของตัว Method ได้ทั้งหมดเลยครับ เเต่ถ้าไม่มีการระบุระดับการเข้าถึง ค่าจะถูกกำหนดให้เป็น Public ครับ
อ้างอิง
http://marcuscode.com/lang/php/classes
http://www.freelancethai.net/forum/index.php?topic=107.0
https://sites.google.com/site/indystyle123/bth-thi-16-kar-kheiyn-porkaerm-cheing-watthu