นับจากบทความบทนี้ไปผมจะเขียนเรื่อง OOP ให้อ่านซึ่งได้รับแรงบันดาลใจมาจาก http://phpenthusiast.com/object-oriented-php-tutorials  เขาเขียนอธิบายเรื่องราวของ OOP ได้อ่านง่าย เลยคิดว่า กูเอามั่ง

หัวข้อที่จะเขียนทั้งหมดมีอยู่ตามนี้  หากใครเข้ามาอ่านแรกๆมันจะไม่มีลิ้งก์นะครับ ต่อเมื่อผมเขียนเรื่องราวนั้นๆแล้ว จะมาแก้หน้านี้แล้วทำลิ้งก์แต่ละหัวข้อไปยังเนื้อหา

  1. Classes and objects
  2. The $this keyword
  3. Chaining methods & properties
  4. Public vs. Private
  5. Magic methods
  6. Inheritance in PHP
  7. Abstract classes & methods
  8. Interfaces
  9. Polymorphism
  10. Type hinting
  11. Static methods & properties
  12. Namespace
  13. Trait

มี 2 หัวข้อสุดท้ายที่ในลิ้งก์นั้นไม่มี แต่ผมเพิ่มเข้ามา เพราะว่ามันก็มีอยู่ใน OOP ของ PHP

ทีนี้ก่อนอื่นเรามาดูกันก่อนซิว่า ทำไมโลกนี้มันถึงต้องมี OOP ไม่มีได้มั้ย? เราเขียนกันแบบฟังก์ชั่นแบบเดิมมันก็ได้แล้วนี่ ทำไมต้องไปสร้างอะไรให้มันวุ่นวายขึ้นมาอีก

ให้มองภาพอย่างนี้ครับ มองออกไปไกลๆ ไกลออกไป มองให้เห็นว่ารอบตัวเราในที่ห่างไกลมีโปรแกรมเมอร์กำลังนั่งมองมายังเราเต็มไปหมด และเราคือทีมเดียวกันกับโปรแกรมเมอร์พวกนั้น โปรแกรมเมอร์ทั้งโลกอยู่รวมด้วยกัน ช่วยกันเขียนโปรแกรมๆหนึ่ง จากที่ห่างไกลกัน

ทีนี้จากภาพนั้นเราดูซิว่าปัญหาอะไรจะเกิดขึ้นบ้าง

หนึ่งละเราไม่ได้คุยกันในรายละเอียดการเขียนโค้ดมากนัก อาจจะได้รับมอบหมายให้ทำไอ้นี่ๆ แล้วทำเลย ทีนี้เกิดอะไรขึ้นเมื่อเอาโค้ดมารวมกัน ตั้งชื่อฟังก์ชั่นเดียวกัน, ตั้งชื่อตัวแปรชื่อเดียวกัน ต้องเข้าใจนะว่าคำภาษาอังกฤษบนโลกนี้มันไม่ได้มีมากมายนัก การจะนึกคำซ้ำกันมันเป็นเรื่องที่เกิดขึ้นชัว

ชื่อฟังก์ชั่นซ้ำ PHP มันยังฟ้องว่าซ้ำ แต่ตัวแปรซ้ำ PHP มันไม่รู้ ทีนี้ละคุณเอ๋ยบั๊กกระจุยจนต้องโยนโค้ดทั้งหมดทิ้ง เพราะไล่กันไม่ไหวว่ามันผิดมาจากตรงไหนและจากใคร

ด้วยเหตุการณ์นี้แหละ มันจึงต้องให้กำเนิดวิธีการเขียนโปรแกรมแบบใหม่ขึ้นมา ตัวแปรซ้ำ, ฟังก์ชั่นซ้ำ ใช่มั้ย อ่ะ เอาอะไรสักอย่างมาหุ้มมันไว้ข้างในซะเลย ให้โอกาสที่จะเกิดการซ้ำกันน้อยลง

นี่จึงเป็นที่มาของ OOP หุ้มฟังก์ชั่นและตัวแปรด้วยชื่อคลาสซะ

ทีนี้ไหนๆก็ไหนๆแล้ว เสนอแนวความคิดของ OOP ขึ้นมาแล้ว ก็เรียกฟังก์ชั่นที่อยู่ในภายในเสียใหม่ว่า Method และเรียกตัวแปรที่อยู่ภายในว่า Property นั่นแหละครับ จริงๆแล้ว OOP ไม่ได้มีอะไรเลย เป็นแค่กลุ่มของฟังก์ชั่นและตัวแปร

ทีนี้ถามต่อว่าทำไมมันต้องชื่อว่า OOP ทำไมไม่ตั้งชื่อว่าคุณประกอบคุณสมทรงหรือว่ามิสเตอร์ดันแคน

ก็เพราะว่า เขาคิดว่าเพื่อเป็นการวางกรอบการสร้างคลาสให้เป็นไปในแนวทางเดียวกันและไม่สับสน ให้เอาโค้ดที่ทำงานเรื่องเดียวกันเท่านั้นมาอยู่ในคลาสเดียวกัน เช่น ฟังก์ชั่นที่จะทำงานเกี่ยวกับไฟล์ก็ให้เอามันมาอยู่ในคลาสเดียวกัน ฟังก์ชั่นที่ใช้สำหรับติดต่อฐานข้อมูลก็ให้เอามาอยู่ในคลาสเดียว

จริงๆคุณจะสร้างมั่วๆก็ได้นะ แต่สุดท้ายแล้วคุณจะงงตัวเองและหาโค้ดตัวเองไม่เจอ

เอาละเมื่อสิ่งที่ทำงานด้วยกันมันมาอยู่ด้วยกันเป็นก้อนๆแล้ว จากนั้นเวลาจะใช้งานก็เอาไอ้ก้อนๆนี้มาต่อๆกัน มันก็เหมือนกับเอาวัตถุมาต่อกันอะนะ

เออเรียกมันว่า Object Oriented Programming การเขียนโปรแกรมเชิงวัตถุ นี่แหละ

แล้ว OOP ก็เกิดขึ้นในโลกนี้

ติดตามตอนต่อไป…