นับจากบทความบทนี้ไปผมจะเขียนเรื่อง OOP ให้อ่านซึ่งได้รับแรงบันดาลใจมาจาก http://phpenthusiast.com/object-oriented-php-tutorials เขาเขียนอธิบายเรื่องราวของ OOP ได้อ่านง่าย เลยคิดว่า กูเอามั่ง
หัวข้อที่จะเขียนทั้งหมดมีอยู่ตามนี้ หากใครเข้ามาอ่านแรกๆมันจะไม่มีลิ้งก์นะครับ ต่อเมื่อผมเขียนเรื่องราวนั้นๆแล้ว จะมาแก้หน้านี้แล้วทำลิ้งก์แต่ละหัวข้อไปยังเนื้อหา
- Classes and objects
- The $this keyword
- Chaining methods & properties
- Public vs. Private
- Magic methods
- Inheritance in PHP
- Abstract classes & methods
- Interfaces
- Polymorphism
- Type hinting
- Static methods & properties
- Namespace
- Trait
มี 2 หัวข้อสุดท้ายที่ในลิ้งก์นั้นไม่มี แต่ผมเพิ่มเข้ามา เพราะว่ามันก็มีอยู่ใน OOP ของ PHP
ทีนี้ก่อนอื่นเรามาดูกันก่อนซิว่า ทำไมโลกนี้มันถึงต้องมี OOP ไม่มีได้มั้ย? เราเขียนกันแบบฟังก์ชั่นแบบเดิมมันก็ได้แล้วนี่ ทำไมต้องไปสร้างอะไรให้มันวุ่นวายขึ้นมาอีก
ให้มองภาพอย่างนี้ครับ มองออกไปไกลๆ ไกลออกไป มองให้เห็นว่ารอบตัวเราในที่ห่างไกลมีโปรแกรมเมอร์กำลังนั่งมองมายังเราเต็มไปหมด และเราคือทีมเดียวกันกับโปรแกรมเมอร์พวกนั้น โปรแกรมเมอร์ทั้งโลกอยู่รวมด้วยกัน ช่วยกันเขียนโปรแกรมๆหนึ่ง จากที่ห่างไกลกัน
ทีนี้จากภาพนั้นเราดูซิว่าปัญหาอะไรจะเกิดขึ้นบ้าง
หนึ่งละเราไม่ได้คุยกันในรายละเอียดการเขียนโค้ดมากนัก อาจจะได้รับมอบหมายให้ทำไอ้นี่ๆ แล้วทำเลย ทีนี้เกิดอะไรขึ้นเมื่อเอาโค้ดมารวมกัน ตั้งชื่อฟังก์ชั่นเดียวกัน, ตั้งชื่อตัวแปรชื่อเดียวกัน ต้องเข้าใจนะว่าคำภาษาอังกฤษบนโลกนี้มันไม่ได้มีมากมายนัก การจะนึกคำซ้ำกันมันเป็นเรื่องที่เกิดขึ้นชัว
ชื่อฟังก์ชั่นซ้ำ PHP มันยังฟ้องว่าซ้ำ แต่ตัวแปรซ้ำ PHP มันไม่รู้ ทีนี้ละคุณเอ๋ยบั๊กกระจุยจนต้องโยนโค้ดทั้งหมดทิ้ง เพราะไล่กันไม่ไหวว่ามันผิดมาจากตรงไหนและจากใคร
ด้วยเหตุการณ์นี้แหละ มันจึงต้องให้กำเนิดวิธีการเขียนโปรแกรมแบบใหม่ขึ้นมา ตัวแปรซ้ำ, ฟังก์ชั่นซ้ำ ใช่มั้ย อ่ะ เอาอะไรสักอย่างมาหุ้มมันไว้ข้างในซะเลย ให้โอกาสที่จะเกิดการซ้ำกันน้อยลง
นี่จึงเป็นที่มาของ OOP หุ้มฟังก์ชั่นและตัวแปรด้วยชื่อคลาสซะ
ทีนี้ไหนๆก็ไหนๆแล้ว เสนอแนวความคิดของ OOP ขึ้นมาแล้ว ก็เรียกฟังก์ชั่นที่อยู่ในภายในเสียใหม่ว่า Method และเรียกตัวแปรที่อยู่ภายในว่า Property นั่นแหละครับ จริงๆแล้ว OOP ไม่ได้มีอะไรเลย เป็นแค่กลุ่มของฟังก์ชั่นและตัวแปร
ทีนี้ถามต่อว่าทำไมมันต้องชื่อว่า OOP ทำไมไม่ตั้งชื่อว่าคุณประกอบคุณสมทรงหรือว่ามิสเตอร์ดันแคน
ก็เพราะว่า เขาคิดว่าเพื่อเป็นการวางกรอบการสร้างคลาสให้เป็นไปในแนวทางเดียวกันและไม่สับสน ให้เอาโค้ดที่ทำงานเรื่องเดียวกันเท่านั้นมาอยู่ในคลาสเดียวกัน เช่น ฟังก์ชั่นที่จะทำงานเกี่ยวกับไฟล์ก็ให้เอามันมาอยู่ในคลาสเดียวกัน ฟังก์ชั่นที่ใช้สำหรับติดต่อฐานข้อมูลก็ให้เอามาอยู่ในคลาสเดียว
จริงๆคุณจะสร้างมั่วๆก็ได้นะ แต่สุดท้ายแล้วคุณจะงงตัวเองและหาโค้ดตัวเองไม่เจอ
เอาละเมื่อสิ่งที่ทำงานด้วยกันมันมาอยู่ด้วยกันเป็นก้อนๆแล้ว จากนั้นเวลาจะใช้งานก็เอาไอ้ก้อนๆนี้มาต่อๆกัน มันก็เหมือนกับเอาวัตถุมาต่อกันอะนะ
เออเรียกมันว่า Object Oriented Programming การเขียนโปรแกรมเชิงวัตถุ นี่แหละ
แล้ว OOP ก็เกิดขึ้นในโลกนี้
ติดตามตอนต่อไป…
Leave a Reply