Encapsulation เป็นการห่อหุ้มหรือกำหนดการเข้าถึงคุณสมบัติ(Property) และพฤติกรรม(Method) ของคลาส(Class) โดยมี keyword 3 คำคือ private, protected และ public ซึ่งขออธิบายแบบพอเข้าใจได้ดังนี้
Private เป็นการกำหนดให้สามารถใช้งานได้เฉพาะในคลาส (Class) เท่านั้น คลาส(Class) อื่นไม่สามารถเรียกใช้งานได้
Protected เป็นการกำหนดให้คลาส(Class) ตัวเองและคลาส(Class) ที่สืบทอดไปเท่านั้นให้สามารถเรียกใช้งานได้
Public เป็นการกำหนดให้คลาส(Class) ใดๆ สามารถเรียกใช้งานได้
ตัวอย่าง
<?php
class Mom
{
private $_wallet = 5000;
protected $family_wallet = 3000;
public $other_wallet = 1000;
private function getWallet()
{
return $this->_wallet;
}
protected function getFamilyWallet()
{
return $this->family_wallet;
}
public function getOtherWallet()
{
return $this->other_wallet;
}
public function getMyWallet()
{
return $this->_wallet;
}
}
class Son extends Mom
{
public function getWL()
{
return $this->getWallet();//ไม่สามารถเรียก privae method ได้
}
public function getFW(){
return $this->getFamilyWallet();//สามารถเรียก protected method ได้
}
}
class Other
{
public function test()
{
$other = new Son();
echo $other->getWallet();//ไม่สามารถเรียก private method ได้
}
}
$mom = new Mom();
//echo $mom->getWallet();// Fatal error: Call to private method Mom::getWallet()
//echo $mom->getFamilyWallet();//Fatal error: Call to protected method Mom::getFamilyWallet()
echo $mom->getOtherWallet();//1000
echo $mom->getMyWallet();//5000
$son = new Son();
//echo $son->getWallet();// Fatal error: Call to private method Mom::getWallet()
echo $son->getFW();//3000
//echo $son->getWL(); //Fatal error: Call to private method Mom::getWallet()
echo $son->getOtherWallet();//1000
echo $son->getMyWallet();//5000
$other = new Other();
//$other->test();//Fatal error: Call to private method Mom::getWallet()
ความคิดเห็น