การเขียน PHP แบบ OOP ตอนที่ 2

การเขียน PHP แบบ OOP ตอนที่ 2

ในตอนที่แล้ว ภาษา PHP: การเขียนแบบ OOP ตอนที่ 1   เป็นเนื้อหาเกี่ยวกับการสร้าง class และ object เบื้องต้นในครั้งนี้จะพูดถึง การสร้าง method get กับ set

โดยเริ่มจากโค้ดจากตอนที่แล้วโดยเปลี่ยนโค้ดดังนี้

[sourcecode language=”php”]

firstName;
$display .= ‘
‘;
$display .= ‘LastName: ‘ . $this->lastName;
return $display;
}

public function setFirstName($name)
{
$this->firstName = $name;
}

public function setLastName($name)
{
$this->lastName = $name;
}

public function getFirstName()
{
return $this->firstName;
}

public function getLastName()
{
return $this->lastName;
}
}

[/sourcecode]

เมื่อลองรันไฟล์ index.php ที่ทำมาจากตอนก่อนก็จะได้ดังนี้

php oop ตอน 2

สังเกตว่าโค้ดใน Class Student มีการเปลี่ยน modifier จาก public เป็น private  เพื่อไม่ให้ object ที่สร้างขึ้นไม่สามารถอ้างอิง member fistName และ lastName หรือเปลี่ยนแปลงค่าได้โดยตรงจึงทำการสร้าง method get และ set ขึ้นมาตามโค้ด

เมื่อลองแก้ไฟล์ index.php ตามโค้ดต่อไปนี้

[sourcecode language=”php”]

Test Class Student

‘;
$student = new Student();

echo ‘

Set Property Class Student

‘;
$student->setFirstName(‘Thaicoding’);
$student->setLastName(‘.Com’);
echo ‘

' . print_r($student) . '

‘;

echo ‘

Function Display

‘;
echo $student->display();

echo ‘

Function get FirstName

‘;
echo $student->getFirstName();

echo ‘

Function get LastName

‘;
echo $student->getLastName();
?>

[/sourcecode]

เมื่อลองรันไฟล์ index.php ก็จะได้ดังรูป

ภาษา PHP: การเขียนแบบ OOP

สังเกตว่า method setFirstName กับ setLastName จะทำการกำหนดค่า member firstName และ lastName ตามค่าที่ส่งเข้าโดย object จะสามารถทำการเรียกใช้งานให้ดูตัวอย่างในไฟล์ index.php คือ $student->setFirstName(‘Thaicoding’);

ส่วน method get นั้นก็แค่ทำการ return ค่า member ที่ต้องการออกมาให้กับ object ที่เรียกใช้งาน ในการทำ method get set นั้นเพื่อป้องกันการเข้าถึง member ของ object ของ class โดยตรงหรือที่เรียกว่า Encapsulation เพื่อให้คนที่เอา class ไปใช้งานนั้นไม่ทำการอ้างอิงถึงจนทำให้เกิดความผิดพลาดของการทำงานของโปรแกรมเกิดขึ้น

ใน php นั้นจะมี magic method ของ _get กับ _set อยู่แต่ในเบื้องต้นนี้ผมเขียนบทความขั้นพื้นฐานก่อนแล้วค่อยหาโอกาสเขียนบทความในรายละเอียดต่อไป

Download SourceCode

Leave a Reply

Your email address will not be published. Required fields are marked *