เคล็ดลับสำหรับการเขียนโปรแกรม PHP-Closure

เคล็ดลับสำหรับการเขียนโปรแกรม PHP-Closure

Closure เป็น anonymous funciton เพื่อปูพื้นฐานก่อนการนำไปพัฒนาเป็นการเขียนโปรแกรมเชิงฟังก์ชั่น(functional programming) ควบคู่กับการเขียนโปรแกรมเชิงวัตถุ(Object-Oriented Programming) closure

ซึ่งทำให้การเขียนโปรแกรมลดความซับซ้อนลง และยืดหยุ่นขึ้นอย่างมาก เช่น หากมี class สำหรับนับเลขโดยผู้ใช้เป็นผู้กำหนดความกว้างและจุดเริ่มต้นของการนับ ดังตัวอย่าง

ผลที่ได้ [ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] จากการ run count

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

ผลที่ได้จากการแก้ไข [ 5, 7, 9, 11, 13]

จะเห็นได้ว่าไม่จำเป็นต้องเขียนอะไรเพิ่มในคลาสเลย ก็สามารถแยกเลขคี่ออกมาจากจำนวนทั้งหมดได้ โดยการใช้งาน array_filter แทนการใช้ loop และใช้ $filter เป็นโคลเชอร์ นอกจากนี้ยังทำให้สามารถใช้งานฟังก์ชั่นซ้อนฟังก์ชั่นใน PHP ได้เหมือนกันภาษา Programming อื่นๆ อีกด้วย

สรุป

Closure ถูกนิยามไว้ว่าคือการนำฟังก์ชั่นเข้าไปเป็น parameter ทำให้สอดคล้องกับนิยามการเปลี่ยนแปลงค่าจากภายในฟังก์ชั่นอีกด้วย โดยเราสามารถนำ closure มาใช้เพื่อให้ได้ข้อมูลที่ต้องการจริงๆ ออกมา จากตัวอย่างในบทความเป็นเพียงส่วนหนึ่งของการใช้ประโยชน์จาก closure เท่านั้น จริงๆ แล้วสามารถนำไปใช้ในการเปลี่ยนแปลง/ตรวจสอบค่าของ parameter ก่อนส่งเข้าไปใช้งานฟังก์ชั่นได้เช่นกัน ซึ่งทำให้สามารถเพิ่มความยืดหยุ่นและความปลอดภัยให้กับระบบได้อีกขั้นหนึ่ง

Write a Comment

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • เปิดใช้งานตลอด

บันทึกการตั้งค่า