เราจะใช้ Final Method ในกรณีที่เราไม่ต้องการให้ method ของเราถูก override จากการ extend ซึ่งเราสามารถทำได้ดังต่อไปนี้
จากในตัวอย่าง ให้สังเกตุว่า สำหรับ method ไหนที่เราต้องการให้เป็น Final Method เราจะเติมคำว่า final เข้าไปข้างหน้า
"Development should be a creative experience that you enjoy, not something that is painful." - Laravel
Showing posts with label PHP OOP. Show all posts
Showing posts with label PHP OOP. Show all posts
Thursday, 12 July 2012
PHP OOP - Abstract Class
ในบางครั้งเราอาจต้องการ implement แค่เพียงบางส่วนของ Class ก่อน แต่เราไม่ต้องการให้ instance ของ Class ถูกสร้าง จนกว่าจะ implement จนสมบูรณ์ สำหรับในกรณีนี้ เราจะใช้ Abstract Class เข้ามาช่วย
Abstract Class คือ Class ที่อนุญาติให้เราสามารถ implement method แค่เพียงบางส่วน แล้วปล่อยให้ Class ที่นำ Abstract Class ไป extend ทำหน้าที่ implement ต่อ ในส่วนที่เหลือ เราไม่สามารถสร้าง instance ขึ้นมาจาก Abstract Class ได้ การสร้าง instance จะต้องสร้างขึ้นจาก Class ที่นำ Abstract Class ไป extend เท่านั้น สำหรับการใช้งาน Abstract Class สามารถทำได้ดังต่อไปนี้
จากในตัวอย่าง ให้สังเกตุว่าเราจะเติมคำว่า abstract ไว้ข้างหน้า สำหรับ Class ที่เป็น Abstract Class และmethod ที่เป็น abstract method (method ที่เรายังไม่ implement)
Abstract Class คือ Class ที่อนุญาติให้เราสามารถ implement method แค่เพียงบางส่วน แล้วปล่อยให้ Class ที่นำ Abstract Class ไป extend ทำหน้าที่ implement ต่อ ในส่วนที่เหลือ เราไม่สามารถสร้าง instance ขึ้นมาจาก Abstract Class ได้ การสร้าง instance จะต้องสร้างขึ้นจาก Class ที่นำ Abstract Class ไป extend เท่านั้น สำหรับการใช้งาน Abstract Class สามารถทำได้ดังต่อไปนี้
จากในตัวอย่าง ให้สังเกตุว่าเราจะเติมคำว่า abstract ไว้ข้างหน้า สำหรับ Class ที่เป็น Abstract Class และmethod ที่เป็น abstract method (method ที่เรายังไม่ implement)
PHP OOP - Inheritance
สำหรับ Class ใดก็ตามที่ inherit (หรือบางทีเรียกว่า extend) จาก Base Class สามารถที่จะใช้งาน Public และ Protected Member ของ Base Class นอกจากนั้นก็ยังสามารถ Override Method ที่ implement ไว้ใน Base Class ได้ สำหรับวิธีการ inherit เราสามารถทำได้ดังวิธีต่อไปนี้
จากตัวอย่าง ให้สังเกตุว่าใน Constructor ของ Derived Class (สำหรับ Class ที่ inherit มา เรามักจะเรียกว่า Derived Class) จะมีการเรียก constructor ของ Parent Class (ในที่นี้ก็คือ Account) โดยทำการเรียกผ่านตัวแปรพิเศษที่มีชื่อว่า parent ซึ่งการเรียก Constructor ของ Parent Class ถือเป็น Common Practice อย่างหนึ่งสำหรับ PHP (สำหรับภาษาที่เป็น OOP ในหลายๆภาษา การเรียก Constructor ของ Parent Class อาจจะเกิดขึ้นโดยอัติโนมัติ แต่สำหรับ PHP เราจะต้องเรียกเอง)
จากตัวอย่าง ให้สังเกตุว่าใน Constructor ของ Derived Class (สำหรับ Class ที่ inherit มา เรามักจะเรียกว่า Derived Class) จะมีการเรียก constructor ของ Parent Class (ในที่นี้ก็คือ Account) โดยทำการเรียกผ่านตัวแปรพิเศษที่มีชื่อว่า parent ซึ่งการเรียก Constructor ของ Parent Class ถือเป็น Common Practice อย่างหนึ่งสำหรับ PHP (สำหรับภาษาที่เป็น OOP ในหลายๆภาษา การเรียก Constructor ของ Parent Class อาจจะเกิดขึ้นโดยอัติโนมัติ แต่สำหรับ PHP เราจะต้องเรียกเอง)
PHP OOP - Using Interface
เราใช้ interface สำหรับสร้าง Rule สำหรับ Class ที่จะนำไป implement กล่าวคือ เราสร้าง interface ขึ้นมา โดยกำหนดเพียงแค่ signature ของ method ส่วน Class ใดก็ตาม ที่นำ interface ไปใช้งาน จะต้อง implement method ตาม signature ที่เราได้กำหนดไว้ method ทั้งหมดที่ประกาศไว้ใน interface จะต้องเป็นแบบ public การประกาศ interface สามารถทำได้ ดังต่อไปนี้
ส่วนการ implement interface สามารถทำได้ ดังต่อไปนี้
ส่วนการ implement interface สามารถทำได้ ดังต่อไปนี้
PHP OOP - Class Data Member & Class Method
สำหรับในกรณีที่เราต้องการสร้างตัวแปรที่ share ข้อมูลกันระหว่างแต่ละ instance เราจะใช้ Class Data Member สำหรับตัวอย่างต่อไปนี้ เราจะลองสร้าง Class Data Member ที่ชื่อว่า $deposit
จาก Class ตัวอย่างข้างต้น จะสังเกตุ การเรียกใช้งาน Class Variable ภายใน Class เราจะเรียกใช้งานผ่านตัวแปรที่มีชื่อว่า self (ซึ่งเป็นตัวแปรที่ใช้สำหรับอ้างถึง Class ซึ่งต่างกับ $this ที่ใช้สำหรับอ้างถึง instance) สำหรับการใช้งาน Class Data Member ภายนอก Class สามารถทำได้ดังต่อไปนี้
นอกจากนั้น ใน Class ตัวอย่างข้างต้น เรายังมีการสร้าง Class Method ที่ชื่อว่า increment_deposits เอาไว้ด้วย (สังเกตุว่าเราประกาศ class method โดยการประกาศ static ไว้ที่หน้า function) ซึ่ง Class Method จะแตกต่างจาก instance method คือ เราสามารถเรียกใช้งานได้เลย โดยไม่จำเป็นต้องสร้าง instance ของ Object ขึ้นมาก่อน ซึ่งการเรียกใช้งาน เราจะเรียกผ่าน Class ดังวิธีต่อไปนี้
จาก Class ตัวอย่างข้างต้น จะสังเกตุ การเรียกใช้งาน Class Variable ภายใน Class เราจะเรียกใช้งานผ่านตัวแปรที่มีชื่อว่า self (ซึ่งเป็นตัวแปรที่ใช้สำหรับอ้างถึง Class ซึ่งต่างกับ $this ที่ใช้สำหรับอ้างถึง instance) สำหรับการใช้งาน Class Data Member ภายนอก Class สามารถทำได้ดังต่อไปนี้
นอกจากนั้น ใน Class ตัวอย่างข้างต้น เรายังมีการสร้าง Class Method ที่ชื่อว่า increment_deposits เอาไว้ด้วย (สังเกตุว่าเราประกาศ class method โดยการประกาศ static ไว้ที่หน้า function) ซึ่ง Class Method จะแตกต่างจาก instance method คือ เราสามารถเรียกใช้งานได้เลย โดยไม่จำเป็นต้องสร้าง instance ของ Object ขึ้นมาก่อน ซึ่งการเรียกใช้งาน เราจะเรียกผ่าน Class ดังวิธีต่อไปนี้
PHP OOP - Declaring a Class
PHP เป็นภาษาในลักษณะ Class Base Language คือ ต้องมีการประกาศ Class ขึ้นมาก่อน แล้วจึงสร้าง instance ของ Object จาก Class นั้น การประกาศ Class ใน PHP สามารถทำได้ดังต่อไปนี้
สำหรับการนำไปใช้งาน เราจะสร้าง instance ของ Object ออกมาจาก Class ดังวิธีต่อไปนี้
![]() |
ตัวอย่างการประกาศ Class ใน PHP |
สำหรับการนำไปใช้งาน เราจะสร้าง instance ของ Object ออกมาจาก Class ดังวิธีต่อไปนี้
![]() |
ตัวอย่างการสร้าง instance ของ Object จาก Class |
Subscribe to:
Posts (Atom)