php oop #1: panda class

ว่ากันเรื่องการเขียนโปรแกรม php แบบ oop หรือ object oriented programming นั่นเอง

ก่อนจะไปว่ากันเรื่อง php ก็ต้องอธิบาย oop กันก่อน สำหรับคนที่คุ้นๆกันอยู่แล้วก็ข้ามไปได้เลย

เอาง่ายๆแบบไม่ยืดยาว oop คือการเขียนโปรแกรมที่ให้ความสำคัญกับ “วัตถุ” คุณสมบัติ และความสัมพันธ์ของมัน โดยมีศัพท์ที่ต้องรู้จัก ดังนี้

  1. Class(ชนิดของวัตถุ) เป็นเหมือนเทมเพลท เพื่อบอกว่าวัตถุชนิดนี้จะมีคุณสมบัติใดบ้าง โดยคุณสมบัติประกอบด้วย 2 อย่าง คือ สถานะ(state) และ พฤติกรรม(behavior)

    คลาส หมีแพนด้า มีสถานะคือ ชื่อหมี และมีพฤติกรรมคือ กินไผ่

  2. Object(วัตถุ) สร้างขึ้นมาจากคลาส โดยเมื่อเป็นวัตถุแล้ว state จะกลายเป็น instance variable(ตัวแปรนั่นแหละ) และ behavior จะถูกเรียกว่า method

    วัตถุ หมีแพนด้า ที่มีชื่อ หลินฮุ่ย สามารถ กินไผ่ ได้

นั่นคือ ถ้าพูดว่า “หมีแพนด้า” ขึ้นมาลอยๆโดยไม่ระบุวัตถุว่าเป็นแพนด้าตัวไหน มันก็จะไม่มีชื่อ และกินไผ่ไม่ได้ งงไหม? ถ้างงก็ลงไปดูโค้ท php กันเลย มันง่ายกว่า จริงๆ

โค้ทตัวอย่างการใช้ oo ใน php แบบง่ายๆ โดยใช้เราจะสร้างคลาสแพนด้ากันก่อน

class Panda{
   var $name;
   function eat(){
       echo "eating bamboo leaf";
   }
}

เมื่อได้คลาสแล้ว มันก็จะไม่มีประโยชน์ใดๆ ถ้าเราไม่สร้างวัตถุขึ้นมาใช้เจ้าคลาสนี้

$p1 = new Panda();
$p1->name="Lin Hui";
$p1->eat();

อธิบายโค้ทคือ
บรรทัดที่ 1 สร้างวัตถุจากคลาส แพนด้า ใส่ในตัวแปรชื่อ p1
บรรทัดที่ 2 ใส่ค่า name ว่า “Lin Hui” ให้วัตถุชนิดแพนด้า p1 นี้
บรรทัดที่ 3 สั่งให้หลินฮุ่ยกินไผ่ เมื่อจบบรรทัดนี้จะมีข้อความ “eating bamboo leaf” พิมพ์ออกมา

ถ้ากลัวหลินฮุ่ยเหงา เราก็จะสร้างแพนด้าขึ้นมาอีกตัว ชื่อ ช่วงๆ โดยเราจะสร้างแค่วัตถุเพิ่ม โดยไม่ยุ่งกับคลาสเลย

$p2 = new Panda();
$p2->name="Chung Chung";

ทีนี้เอาโค้ทมารวมกัน แล้วสั่งให้พิมพ์ชื่อหมีออกมาทั้งสองตัว

class Panda{
   var $name;
   function eat(){
       echo "eating bamboo leaf";
   }
}

$p1 = new Panda();
$p1->name="Lin Hui";

$p2 = new Panda();
$p2->name="Chung Chung";

echo $p1->name;
echo "
"; echo $p2->name;

ก็คงจะเดากันได้ ว่าผลลัพท์ที่จะได้ก็คือจะมีข้อความ
Lin Hui
Chung Chung
พิมพ์ออกมา ซึ่งแสดงว่าตัวแปรในทั้งสอง object นั้นถูกเก็บแยกเป็นอิสระจากกัน

เรื่องแพนด้าและวัตถุนี้ก็เอาไว้คร่าวๆแค่นี้ก่อนให้มองเห็นภาพวิธีการเขียน php แบบ object oriented โดยไม่ได้หวังว่าจะเป็นประโยชน์แก่ใครเท่าไหร่นัก เขียนเพื่อความมันส์ส่วนตัวล้วนๆ แต่ถ้ามีใครอ่านแล้วได้ประโยชน์ก็(แอบ)ดีใจด้วย!

  1. No comments yet.

  1. No trackbacks yet.