เมื่อ blog อันเมื่อกี้ไม่ได้ทักทายมาอันนี้ทักทายนิดดีกว่า
คือที่หายไปเพราะว่ามี project SAD แล้วเดี่ยวต้องทำ project Database ต่ออีก โอ้ววววววว ยังไม่พอนะท่านๆ ตอนนี้ทำ Project ขนาดใหญ่พอสมควร ทำคนเดียว อีก เวรกรรม เพราะว่าเพื่อนๆ ใน section และชั้นปีมันคงไม่มีใครเขียน PHP และทำงานบน MySQL ได้ (แค่ SQL ทำงานแบบ SELECT กว่า 80% ยังคงใช้งานไม่เก่งเพียงพอ ขื่นมาช่วยทำเกรงว่าเวลา train กับเวลาทำเอง จะพอๆ กันกลายเป็นงาน x2 ไป -_-”) แถมเขียน PHP แบบ OOP อีก ยิ่งไปใหญ่ เพราะอย่างที่บอกไป Concept OOP ถ้าคนไม่เข้าใจจะโคตร งง ผมก็ไม่ได้เก่งเท่าไหร่ แต่เอามาใช้งานได้ก็ถือว่า OK แหละ
คือเขียน PHP แบบ OOP นี่มันค้อนข้างจะผิดหลักพอสมควร (Version 4 ครับ) มันไม่ Encapsule เลย เซง แต่ก็พยายาม lock ตัวเอง และอื่นๆ ไม่ให้มันออกมานอก Class ได้แบบไม่ตั้งใจ ทุกๆ อย่างทำงานผ่าน Method หมด กันไว้ก่อน เพราะว่ามันปรับแต่งผ่าน Method ให้มันจัดการกับตัวแปรต่างๆ ได้ง่ายกว่าด้วย ขื่นให้ดึงไปใช้ได้ดื้อๆ มันจะมีปัญหาแน่นอน …. ตอนปรับแต่ง code บางคนที่มามอง class อาจดูโง่ๆ แต่ถือว่าเผื่ออนาคตดีกว่า มันไม่แน่ไม่นอน เพราะว่ายิ่งใกล้ทำ prototype ให้เค้ายิ่งมี request ที่ไม่ตรงกับ interfact และ operation ของเรามากขึ้น ยิ่งต้องเตรียมการไว้ก่อน จะได้สบายหน่อย
แต่ PHP แบบ OOP ถือว่าเขียนง่ายนะ สำหรับ Version 4 แต่ถ้า Version 5 ผมว่า OK กว่า แต่ว่าหา Server มา Run มันยากเลยต้องยึด เจ้า Version 4 ไปก่อนดีกว่า เพราะว่า Version 5 มันไปไกล และเขียนได้ดูเป็น OOP มาก และจัดการตัวแปร ง่ายกว่าเยอะ ทำให้ผมโปรแกรมภายในได้ง่ายกว่าเยอะเลย แต่ก็เล็กกับข้อกำหนดจุกจิกสักหน่อย แต่ไม่หวั่น เพราะว่าC++ มันมีเยอะกว่า เลยเฉยๆ ฮา …….
แต่เมื่อวานนี้คุยกับรุ่นน้องคนนึงมาคุยเรื่องเขียนโปรแกรมแบบ OOP ไม่รู้เรียนอีท่าไหน เอาตัวแปรมาใส่ Public เพียบเลย แถมถามกลับไปว่ารู้จักใช้ get/set ป่าว ตอบกลับมาแบบ งง ว่า “คือไร” ไอ้เราก็เซงเลยดิ อืมมมมม นะ
คือไม่ใช่อะไรหรอก การจัดการตัวแปร ต้องผ่าน method ที่ขึ้นต้นด้วย get (เข้าถึง) และ set (ตั้งค่า) ด้วยเหตุผลว่า การเข้าถึงแบบ method นั้น เราสามารถโปรแกรมได้ว่าจะ get/set แล้วมีขั้นตอนอย่างไรบ้าง โดยที่ข้อมูลที่ “ตั้งค่า” และ “เข้าถึง” นั้นจะถูกนำไปใช้งาน หรือได้รับออกมาได้ถูกต้องตรงตามที่มันควรจะเป็นไป เช่น(ตัวอย่าง PHP นะ)
$x->set_month(15); // มันจะไม่ได้ เพราะว่าใน method นี้จะมีการตรวจเช็คว่า value >0 and <13 อยู่ และ return หรือ echo ออกมาว่า เกินกว่าจำนวนเดือนที่เป็นจริง แต่ถ้าเป็น
$y->date_month = 15; // มันจะใส่ได้ และไม่ขึ้น error หรือ echo อะไร เพราะว่ามันเป็นการใส่ค่าไปตรงๆ โดยไม่มีการตรวจสอบแบบด้านบน
ส่วน get ก็ประมาณเดียวกัน แต่ว่าการ get อาจจะเอามาใช้ในการแปลงตัวแปรต่างๆ ได้เช่นกัน ประมาณว่า
echo($x->get_month_name(12)); // มันก็จะเอา 12 ไปเทียบกับ string แล้ว return ค่าเป็นชื่อเดือนแทน อะไรประมาณนี้
เห็นแมะ ถ้าจัดการผ่าน method มันจะทำให้เราเขียนจัดการตัวแปรเข้า และออกจาก object ได้ง่าย และถูกต้องตรงตามความจริงได้ง่ายๆ เลย
ใครคิดว่า OOP มันเป็นอะไรที่ยาก ลองศึกษาและคิดใหม่น่าจะดีนะ ;)